/* Metro module 14861; source: modules/thumbhash/ThumbhashUtils.tsx; dependencies: [13657, 2] */ function _fun112367(global, require, importDefault, importAll, module, exports, dependencyMap) { // fn#112367, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:15058:6, offset: 0x023c7b18, size: 113 bytes, params: 8, frame: 19 const env0_0 = require; const closure = thumbHashToRGBA_112368; const Object = global.Object; Object.defineProperty(exports, '__esModule', {value: true}); (require(2) /* metro dependency 2 */).fileFinishedImporting('modules/thumbhash/ThumbhashUtils.tsx'); exports.createThumbhashImageFromPlaceholder = createThumbhashImageFromPlaceholder; exports.thumbHashToRGBA = closure; } function thumbHashToRGBA_112368(a0) { // fn#112368, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:15058:47, offset: 0x023c7b89, size: 1501 bytes, params: 2, frame: 101 var r0; var r11; var r8; var r1; var r38; var r5; var r23; var r24; var r59; var r60; var r61; var r62; var r63; var r66; var r70; var r77; var r78; var r64; var r82; var r67; var r68; var r80; var r81; var r83; var r79; var r85; var r86; var r87; var r84; var value11; var value13; var value16; var value19; var value27; var value29; var value38; var value39; var value40; var value41; var value42; var value43; var value44; var value45; var value46; var value47; var value48; var value49; var value50; var value51; var value52; var value53; var value54; var value55; var value56; var value57; var value58; var value59; var value60; var value61; var value62; var value63; var value64; var value65; var value66; var value67; var value68; var value69; var value70; var value71; var value72; let value = a1; const env0_0 = a0; reducibleJoin2: while (true) { if (value !== undefined) { r0 = value; break reducibleJoin2; } r0 = {}; break reducibleJoin2; } let detail = r0.detail; reducibleJoin4: while (true) { if (detail !== undefined) { break reducibleJoin4; } value = 1; detail = value; break reducibleJoin4; } let pop = r0.pop; reducibleJoin6: while (true) { if (pop !== undefined) { break reducibleJoin6; } value = 1; pop = value; break reducibleJoin6; } let Math = global.Math; const PI = Math.PI; Math = global.Math; const min = Math.min; Math = global.Math; const max = Math.max; Math = global.Math; const cos = Math.cos; Math = global.Math; const round = Math.round; value = 0; let property = a0[value]; const value2 = 1; const value4 = property | a0[value2] << 8 | a0[2] << 16; const value5 = 3; const value6 = a0[value5] | a0[4] << 8; const value7 = value4 >> 23; const value8 = value6 >> 15; const value9 = 7; if (value8) { reducibleJoin10: while (true) { if (value7) { value11 = 5; r11 = value11; break reducibleJoin10; } r11 = value9; break reducibleJoin10; } r8 = r11; } else { r8 = value9 & value6; } const value12 = max(value5, r8); if (value8) { r1 = value9 & value6; } else { reducibleJoin14: while (true) { if (value7) { value13 = 5; r1 = value13; break reducibleJoin14; } r1 = value9; break reducibleJoin14; } } const value15 = max(value5, r1); reducibleJoin18: while (true) { if (value7) { value16 = (15 & a0[5]) / 15; r38 = value16; break reducibleJoin18; } r38 = value2; break reducibleJoin18; } const value17 = 5; const value18 = a0[value17] >> 4; reducibleJoin20: while (true) { if (value7) { value19 = 6; r5 = value19; break reducibleJoin20; } r5 = value17; break reducibleJoin20; } const closure = thumbHashToRGBA_112368DecodeChannel; const value20 = closure(value12, value15, (value4 >> 18 & 31) / 31 / 2); const value21 = closure(value5, value5, (value6 >> value5 & 63) / 63 * pop); const value22 = closure(value5, value5, (value6 >> 9 & 63) / 63 * pop); const r33 = value7 ? closure(value17, value17, value18 / 15) : []; const value25 = require(dependencyMap[value]).thumbHashToApproximateAspectRatio(a0); const value26 = 32; reducibleJoin25: while (true) { if (value25 > value2) { r1 = value26; break reducibleJoin25; } value27 = value26 * value25; r1 = value27; break reducibleJoin25; } const value28 = round(r1); reducibleJoin27: while (true) { if (value25 > value2) { value29 = value26 / value25; r1 = value29; break reducibleJoin27; } r1 = value26; break reducibleJoin27; } const value30 = round(r1); const Uint8Array = global.Uint8Array; const uint8Array = new Uint8Array(value28 * value30 * 4); const items2 = []; const items3 = []; const value34 = value < value30; const value35 = (63 & value4) / 63; if (value34) { r23 = value; r24 = value; reducibleLoop28: while (true) { if (value < value28) { r59 = value; r60 = r23; reducibleLoop29: while (true) { r61 = value7 ? value17 : value5; value38 = max(value12, r61); if (value < value38) { r61 = value; reducibleLoop31: while (true) { value39 = PI / value28; items2[r61] = cos(value39 * (r59 + 0.5) * r61); value40 = typeof r61 === 'bigint' ? r61 + 1n : +r61 + 1; if (value40 < value38) { r61 = value40; continue reducibleLoop31; } break reducibleLoop31; } } r61 = value7 ? value17 : value5; value41 = max(value15, r61); if (value < value41) { r61 = value; reducibleLoop34: while (true) { value42 = PI / value30; items3[r61] = cos(value42 * (r24 + 0.5) * r61); value43 = typeof r61 === 'bigint' ? r61 + 1n : +r61 + 1; if (value43 < value41) { r61 = value43; continue reducibleLoop34; } break reducibleLoop34; } } if (value < value15) { r61 = value; r62 = value; r63 = value35; reducibleLoop36: while (true) { r66 = r62 ? value : value2; value44 = 2 * items3[r62]; value45 = r66 * value15; if (value45 < value12 * (value15 - r62)) { r70 = r66; r77 = r61; r78 = r63; reducibleLoop38: while (true) { value46 = r70 > detail; reducibleJoin40: while (true) { if (value46) { r64 = value46; break reducibleJoin40; } value47 = r62 > detail; r64 = value47; break reducibleJoin40; } reducibleJoin42: while (true) { if (r64) { r82 = r78; break reducibleJoin42; } property = value20[r77]; value48 = r78 + property * items2[r70] * value44; r82 = value48; break reducibleJoin42; } value49 = typeof r70 === 'bigint' ? r70 + 1n : +r70 + 1; value50 = typeof r77 === 'bigint' ? r77 + 1n : +r77 + 1; value51 = value49 * value15; if (value51 < value12 * (value15 - r62)) { r70 = value49; r77 = value50; r78 = r82; continue reducibleLoop38; } r67 = value50; r68 = r82; break reducibleLoop38; } } else { r67 = r61; r68 = r63; } value52 = typeof r62 === 'bigint' ? r62 + 1n : +r62 + 1; if (value52 < value15) { r61 = r67; r62 = value52; r63 = r68; continue reducibleLoop36; } r80 = r68; break reducibleLoop36; } } else { r80 = value35; } r61 = value; r62 = value; r63 = (value4 >> 12 & 63) / 31.5 - value2; r64 = (value4 >> 6 & 63) / 31.5 - value2; reducibleLoop45: while (true) { r66 = r62 ? value : value2; value53 = 2 * items3[r62]; if (r66 < value5 - r62) { r77 = r66; r81 = r61; r82 = r63; r83 = r64; reducibleLoop47: while (true) { value54 = items2[r77] * value53; value55 = r83 + value21[r81] * value54; value56 = r82 + value22[r81] * value54; value57 = typeof r77 === 'bigint' ? r77 + 1n : +r77 + 1; value58 = typeof r81 === 'bigint' ? r81 + 1n : +r81 + 1; if (value57 < value5 - r62) { r77 = value57; r81 = value58; r82 = value56; r83 = value55; continue reducibleLoop47; } r67 = value58; r78 = value56; r79 = value55; break reducibleLoop47; } } else { r67 = r61; r78 = r63; r79 = r64; } value59 = typeof r62 === 'bigint' ? r62 + 1n : +r62 + 1; if (value59 < value5) { r61 = r67; r62 = value59; r63 = r78; r64 = r79; continue reducibleLoop45; } break reducibleLoop45; } if (value7) { r62 = value; r63 = value; r64 = r38; reducibleLoop50: while (true) { r82 = r63 ? value : value2; value60 = 2 * items3[r63]; if (r82 < value17 - r63) { r85 = r82; r86 = r62; r87 = r64; reducibleLoop52: while (true) { property = r33[r86]; value61 = r87 + property * items2[r85] * value60; value62 = typeof r85 === 'bigint' ? r85 + 1n : +r85 + 1; value63 = typeof r86 === 'bigint' ? r86 + 1n : +r86 + 1; if (value62 < value17 - r63) { r85 = value62; r86 = value63; r87 = value61; continue reducibleLoop52; } r83 = value63; r84 = value61; break reducibleLoop52; } } else { r83 = r62; r84 = r64; } value64 = typeof r63 === 'bigint' ? r63 + 1n : +r63 + 1; if (value64 < value17) { r62 = r83; r63 = value64; r64 = r84; continue reducibleLoop50; } r61 = r84; break reducibleLoop50; } } else { r61 = r38; } value65 = r80 - 0.6666666666666666 * r79; value66 = (value5 * r80 - value65 + r78) / 2; uint8Array[r60] = max(value, 255 * min(value2, value66)); value67 = max(value, 255 * min(value2, value66 - r78)); uint8Array[r60 + value2] = value67; value68 = max(value, 255 * min(value2, value65)); uint8Array[r60 + 2] = value68; value69 = max(value, 255 * min(value2, r61)); uint8Array[r60 + value5] = value69; value70 = typeof r59 === 'bigint' ? r59 + 1n : +r59 + 1; value71 = r60 + 4; if (value70 < value28) { r59 = value70; r60 = value71; continue reducibleLoop29; } r23 = value71; break reducibleLoop29; } } value72 = typeof r24 === 'bigint' ? r24 + 1n : +r24 + 1; if (value72 < value30) { r24 = value72; continue reducibleLoop28; } break reducibleLoop28; } } return {w: value28, h: value30, rgba: uint8Array}; } function createThumbhashImageFromPlaceholder(a0) { // fn#112370, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:15058:1505, offset: 0x023c8166, size: 121 bytes, params: 2, frame: 17 const thumbHashToRGBA_112368Binding = thumbHashToRGBA_112368; const Uint8Array = global.Uint8Array; const value4 = thumbHashToRGBA_112368Binding(Uint8Array.from(global.atob(a0), function(a0) { return a0.charCodeAt(0); }), {'detail': 1, 'pop': 1.1}); const value = require(13657) /* metro dependency 13657 */; return value.rgbaToDataURL(value4.w, value4.h, value4.rgba); }