Function at 0x1400287b0
Capabilities:
Create thread

Disassembly:
mov qword [rsp + 0x18], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 7]
sub rsp, 0xa0
mov rax, qword [0x1400890c0]
xor rax, rsp
mov qword [rbp - 1], rax
mov r12, rdx
mov qword [rbp - 0x39], rdx
mov rsi, rcx
mov qword [rbp - 0x29], rcx
mov r15, qword [rbp + 0x6f]
xorps xmm0, xmm0
movups xmmword [rcx], xmm0
xor r14d, r14d
mov qword [rcx + 0x10], r14
mov qword [rcx + 0x28], r14
mov qword [rcx + 0x30], r14
mov qword [rcx + 0x38], r14
mov qword [rcx + 0x40], r14
mov qword [rcx + 0x48], r14
mov qword [rcx + 0x50], r14
mov qword [rcx + 0x58], r14
mov qword [rcx + 0x60], r14
mov qword [rcx + 0x68], r14
mov qword [rcx + 0x80], r14
mov qword [rcx + 0x88], r14
mov qword [rcx + 0x90], r14
mov dword [rcx + 0x98], r14d
mov word [rcx + 0x9c], r14w
movups xmmword [rcx + 0xa0], xmm0
movups xmmword [rcx + 0xb0], xmm0
mov word [rcx + 0xc0], r14w
mov qword [rcx + 0xc8], r14
mov byte [rcx + 0xd0], r14b
mov qword [rcx + 0xd8], r14
mov qword [rcx + 0xe0], r14
mov qword [rcx + 0xe8], r14
mov qword [rcx + 0xf0], r14
mov word [rcx + 0xf8], r14w
mov byte [rcx + 0xfa], r14b
mov qword [rcx + 0x100], r14
mov qword [rcx + 0x108], r14
mov qword [rcx + 0x110], r14
mov byte [rcx + 0x128], r14b
movups xmmword [rcx + 0x12c], xmm0
mov word [rcx + 0x13c], r14w
mov qword [rcx + 0x120], rdx
movaps xmm0, xmmword [r8]
movups xmmword [rcx + 0x18], xmm0
mov qword [rcx + 0x70], r9
mov rax, qword [rbp + 0x67]
mov qword [rcx + 0x78], rax
mov eax, dword [rbp + 0x77]
mov dword [rcx + 0xc4], eax
xor ecx, ecx
call qword [sym.imp.USER32.dll_GetDC]
mov rbx, rax
lea edx, [r14 + 0x58]
mov rcx, rax
call qword [sym.imp.GDI32.dll_GetDeviceCaps]
mov edi, eax
lea edx, [r14 + 0x5a]
mov rcx, rbx
call qword [sym.imp.GDI32.dll_GetDeviceCaps]
mov rdx, rbx
xor ecx, ecx
call qword [sym.imp.USER32.dll_ReleaseDC]
mov rdx, rsi
mov rcx, qword [rsi + 0x120]
call qword [sym.imp.USER32.dll_GetWindowRect]
movd xmm3, dword [rsi]
cvtdq2ps xmm3, xmm3
xorps xmm5, xmm5
cvtsi2ss xmm5, rdi
movaps xmm0, xmm3
movss xmm4, dword [0x14007ba34]
mulss xmm0, xmm4
divss xmm0, xmm5
movss dword [rsi + 0x12c], xmm0
movd xmm1, dword [rsi + 4]
cvtdq2ps xmm1, xmm1
movaps xmm0, xmm1
mulss xmm0, xmm4
divss xmm0, xmm5
movss dword [rsi + 0x130], xmm0
movd xmm2, dword [rsi + 8]
cvtdq2ps xmm2, xmm2
subss xmm2, xmm3
movd xmm0, dword [rsi + 0xc]
cvtdq2ps xmm0, xmm0
subss xmm0, xmm1
mulss xmm2, xmm4
divss xmm2, xmm5
movss dword [rsi + 0x134], xmm2
mulss xmm0, xmm4
divss xmm0, xmm5
movss dword [rsi + 0x138], xmm0
mov byte [0x14008c6cb], 1
lea ecx, [r14 + 0xa]
call qword [sym.imp.KERNEL32.dll_Sleep]
test r15, r15
jne 0x140028fef
mov ecx, 0x178
call fcn.14002f20c
mov qword [rbp - 0x41], rax
movzx r8d, byte [rbp + 0x7f]
mov rdx, r12
mov rcx, rax
call fcn.14002b740
nop
mov qword [rsi + 0x10], rax
mov qword [rbp - 0x41], r14
mov rcx, qword [rax + 0x20]
mov rax, qword [rcx]
lea rdx, [rbp - 0x41]
mov qword [rsp + 0x40], rdx
lea rbx, str.en_us
mov qword [rsp + 0x38], rbx
movss xmm0, dword [0x14007b9f8]
movss dword [rsp + 0x30], xmm0
mov dword [rsp + 0x28], 5
mov dword [rsp + 0x20], r14d
mov r9d, 0x1f4
xor r8d, r8d
lea rdx, [0x140073918]
call qword [rax + 0x78]
mov rax, qword [rbp - 0x41]
mov qword [rsi + 0x28], rax
mov rax, qword [rsi + 0x10]
mov qword [rbp - 0x41], r14
mov rcx, qword [rax + 0x20]
mov rax, qword [rcx]
lea r8, [rbp - 0x41]
mov qword [rsp + 0x40], r8
mov qword [rsp + 0x38], rbx
movss xmm0, dword [0x14007b9e4]
movss dword [rsp + 0x30], xmm0
mov dword [rsp + 0x28], 5
mov dword [rsp + 0x20], r14d
mov r9d, 0x1f4
xor r8d, r8d
lea rdx, [0x140073918]
call qword [rax + 0x78]
mov rax, qword [rbp - 0x41]
mov qword [rsi + 0x30], rax
xorps xmm0, xmm0
movups xmmword [rbp - 0x21], xmm0
mov qword [rbp - 0x11], r14
mov qword [rbp - 9], 0xf
mov byte [rbp - 0x21], r14b
mov r8d, 0x19fe
lea rdx, [0x140073970]
lea rcx, [rbp - 0x21]
call fcn.140008f30
mov r15, qword [rbp - 0x11]
mov rcx, r15
call fcn.14002f248
mov rdi, rax
lea r9, [rbp - 0x21]
cmp qword [rbp - 9], 0xf
cmova r9, qword [rbp - 0x21]
mov rbx, 0xffffffffffffffff
mov rcx, rbx
nop dword [rax + rax]
inc rcx
cmp byte [r9 + rcx], 0
jne 0x140028ae0
shr rcx, 1
movsxd r11, ecx
mov r10, r14
mov r8d, 0xffffffd0
test ecx, ecx
je 0x140028b37
inc r9
mov edx, 0xffffffc9
cmp byte [r9 - 1], 0x41
cmovl edx, r8d
add dl, byte [r9 - 1]
shl dl, 4
mov eax, 0xffffffc9
cmp byte [r9], 0x41
cmovl eax, r8d
add dl, al
add dl, byte [r9]
mov byte [r10 + rdi], dl
inc r10
lea r9, [r9 + 2]
cmp r10, r11
jb 0x140028b00
shr r15, 1
lea r9, [rsi + 0x38]
mov r8d, r15d
mov rdx, rdi
mov rcx, qword [rsi + 0x10]
call fcn.14002c1c0
mov rcx, rdi
call fcn.14002f120
mov r8d, 0x1a80
lea rdx, [0x140075370]
lea rcx, [rbp - 0x21]
call fcn.140008f30
mov r12, qword [rbp - 0x11]
mov rcx, r12
call fcn.14002f248
mov rdi, rax
lea r10, [rbp - 0x21]
cmp qword [rbp - 9], 0xf
cmova r10, qword [rbp - 0x21]
mov rcx, rbx
nop dword [rax + rax]
inc rcx
cmp byte [r10 + rcx], 0
jne 0x140028b90
shr rcx, 1
movsxd r15, ecx
mov r11, r14
test ecx, ecx
je 0x140028be7
inc r10
mov r8d, 0xffffffd0
mov edx, 0xffffffc9
cmp byte [r10 - 1], 0x41
cmovl edx, r8d
add dl, byte [r10 - 1]
shl dl, 4
mov eax, 0xffffffc9
cmp byte [r10], 0x41
cmovl eax, r8d
add dl, al
add dl, byte [r10]
mov byte [r11 + rdi], dl
inc r11
lea r10, [r10 + 2]
cmp r11, r15
jb 0x140028bb0
shr r12, 1
lea r9, [rsi + 0x48]
mov r8d, r12d
mov rdx, rdi
mov rcx, qword [rsi + 0x10]
call fcn.14002c1c0
mov rcx, rdi
call fcn.14002f120
mov r8d, 0x1aa0
lea rdx, str.89504E470D0A1A0A0000000D49484452000000270000001308060000001348148E000000097048597300000B1300000B1301009A9C1800000A4D6943435050686F746F73686F70204943432070726F66696C65000078DA9D53775893F7163EDFF7650F5642D8F0B1976C81002223AC08C81059A21092006184101240C585880A561415119C4855C482D50A489D88E2A028B867418A885A8B555C38EE1FDCA7B57D7AEFEDEDFBD7FBBCE79CE7FCCE79CF0F8011122691E6A26A003952853C3AD81F8F4F48C4C9BD80021548E0042010E6CBC26705C50000F00379787E74B03FFC01AF6F00020070D52E2412C7E1FF83BA50265700209100E02212E70B01905200C82E54C81400C81800B053B3640A009400006C797C422200AA0D00ECF4493E0500D8A993DC1700D8A21CA908008D0100992847240240BB00605581522C02C0C200A0AC40222E04C0AE018059B632470280BD0500768E58900F4060008099422CCC0020380200431E13CD03204C03A030D2BFE0A95F7085B8480100C0CB95CD974BD23314B895D01A77F2F0E0E221E2C26CB142611729106609E4229C979B231348E7034CCE0C00001AF9D1C1FE383F90E7E6E4E1E666E76CEFF4C5A2FE6BF06F223E21F1DFFEBC8C020400104ECFEFDA5FE5E5D60370C701B075BF6BA95B00DA560068DFF95D33DB09A05A0AD07AF98B7938FC401E9EA150C83C1D1C0A0B0BED2562A1BD30E38B3EFF33E16FE08B7EF6FC401EFEDB7AF000719A4099ADC0A383FD71616E76AE528EE7CB0442316EF7E723FEC7857FFD8E29D1E234B15C2C158AF15889B850224DC779B952914421C995E212E97F32F11F96FD0993770D00AC864FC04EB607B5CB6CC07EEE01028B0E58D27600407EF32D8C1A0B91001067343279F7000093BFF98F402B0100CD97A4E30000BCE8185CA894174CC608000044A0812AB041070CC114ACC00E9CC11DBCC01702610644400C24C03C104206E4801C0AA11896411954C03AD804B5B0031AA0119AE110B4C131380DE7E0125C81EB70170660189EC218BC86090441C8081361213A8811628ED822CE0817998E04226148349280A420E988145122C5C872A402A9426A915D4823F22D7214398D5C40FA90DBC820328AFC8ABC47319481B25103D4027540B9A81F1A8AC6A073D174340F5D8096A26BD11AB41E3D80B6A2A7D14BE87574007D8A8E6380D1310E668CD9615C8C87456089581A26C71663E55835568F35631D583776151BC09E61EF0824028B8013EC085E8410C26C82909047584C5843A825EC23B412BA085709838431C2272293A84FB4257A12F9C478623AB1905846AC26EE211E219E255E270E135F9348240EC992E44E0A21259032490B496B48DB482DA453A43ED210699C4C26EB906DC9DEE408B280AC209791B7900F904F92FBC9C3E4B7143AC588E24C09A22452A494124A35653FE504A59F324299A0AA51CDA99ED408AA883A9F5A496DA076502F5387A91334759A25CD9B1643CBA42DA3D5D09A696769F7682FE974BA09DD831E4597D097D26BE807E9E7E983F4770C0D860D83C7486228196B197B19A718B7192F994CA605D39799C85430D7321B9967980F986F55582AF62A7C1591CA12953A9556957E95E7AA545573553FD579AA0B54AB550FAB5E567DA64655B350E3A909D416ABD5A91D55BBA936AECE5277528F50CF515FA3BE5FFD82FA630DB2868546A08648A35463B7C6198D2116C63265F15842D6725603EB2C6B984D625BB2F9EC4C7605FB1B762F7B4C534373AA66AC6691669DE671CD010EC6B1E0F039D99C4ACE21CE0DCE7B2D032D3F2DB1D66AAD66AD7EAD37DA7ADABEDA62ED72ED16EDEBDAEF75709D409D2C9DF53A6D3AF77509BA36BA51BA85BADB75CFEA3ED363EB79E909F5CAF50EE9DDD147F56DF4A3F517EAEFD6EFD11F373034083690196C313863F0CC9063E86B9869B8D1F084E1A811CB68BA91C468A3D149A327B826EE8767E33578173E66AC6F1C62AC34DE65DC6B3C61626932DBA4C4A4C5E4BE29CD946B9A66BAD1B4D374CCCCC82CDCACD8ACC9EC8E39D59C6B9E61BED9BCDBFC8D85A5459CC54A8B368BC796DA967CCB05964D96F7AC98563E567956F556D7AC49D65CEB2CEB6DD6576C501B579B0C9B3A9BCBB6A8AD9BADC4769B6DDF14E2148F29D229F5536EDA31ECFCEC0AEC9AEC06ED39F661F625F66DF6CF1DCC1C121DD63B743B7C727475CC766C70BCEBA4E134C3A9C4A9C3E957671B67A1739DF33517A64B90CB1297769717536DA78AA76E9F7ACB95E51AEEBAD2B5D3F5A39BBB9BDCADD96DD4DDCC3DC57DABFB4D2E9B1BC95DC33DEF41F4F0F758E271CCE39DA79BA7C2F390E72F5E765E595EFBBD1E4FB39C269ED6306DC8DBC45BE0BDCB7B603A3E3D65FACEE9033EC63E029F7A9F87BEA6BE22DF3DBE237ED67E997E07FC9EFB3BFACBFD8FF8BFE179F216F14E056001C101E501BD811A81B3036B031F049904A50735058D05BB062F0C3E15420C090D591F72936FC017F21BF96333DC672C9AD115CA089D155A1BFA30CC264C1ED6118E86CF08DF107E6FA6F94CE9CCB60888E0476C88B81F69199917F97D14292A32AA2EEA51B453747174F72CD6ACE459FB67BD8EF18FA98CB93BDB6AB6727667AC6A6C526C63EC9BB880B8AAB8817887F845F1971274132409ED89E4C4D8C43D89E37302E76C9A339CE49A54967463AEE5DCA2B917E6E9CECB9E773C593559907C3885981297B23FE5832042502F184FE5A76E4D1D13F2849B854F45BEA28DA251B1B7B84A3C92E69D5695F638DD3B7D43FA68864F4675C633094F522B79911992B923F34D5644D6DEACCFD971D92D39949C949CA3520D6996B42BD730B728B74F662B2B930DE479E66DCA1B9387CAF7E423
lea rcx, [rbp - 0x21]
call fcn.140008f30
mov r12, qword [rbp - 0x11]
mov rcx, r12
call fcn.14002f248
mov rdi, rax
lea r10, [rbp - 0x21]
cmp qword [rbp - 9], 0xf
cmova r10, qword [rbp - 0x21]
mov rcx, rbx
nop dword [rax + rax]
inc rcx
cmp byte [r10 + rcx], 0
jne 0x140028c40
shr rcx, 1
movsxd r15, ecx
mov r11, r14
mov r13d, 0xffffffd0
test ecx, ecx
je 0x140028c97
inc r10
mov edx, 0xffffffc9
cmp byte [r10 - 1], 0x41
cmovl edx, r13d
add dl, byte [r10 - 1]
shl dl, 4
mov eax, 0xffffffc9
cmp byte [r10], 0x41
cmovl eax, r13d
add dl, al
add dl, byte [r10]
mov byte [r11 + rdi], dl
inc r11
lea r10, [r10 + 2]
cmp r11, r15
jb 0x140028c60
shr r12, 1
lea r9, [rsi + 0x40]
mov r8d, r12d
mov rdx, rdi
mov rcx, qword [rsi + 0x10]
call fcn.14002c1c0
mov rcx, rdi
call fcn.14002f120
mov r8d, 0x100a
lea rdx, str.89504E470D0A1A0A0000000D49484452000000270000001308060000001348148E000000097048597300000B1300000B1301009A9C18000005BB69545874584D4C3A636F6D2E61646F62652E786D7000000000003C3F787061636B657420626567696E3D22EFBBBF222069643D2257354D304D7043656869487A7265537A4E54637A6B633964223F3E203C783A786D706D65746120786D6C6E733A783D2261646F62653A6E733A6D6574612F2220783A786D70746B3D2241646F626520584D5020436F726520372E312D633030302037392E396363633464652C20323032322F30332F31342D31313A32363A31392020202020202020223E203C7264663A52444620786D6C6E733A7264663D22687474703A2F2F7777772E77332E6F72672F313939392F30322F32322D7264662D73796E7461782D6E7323223E203C7264663A4465736372697074696F6E207264663A61626F75743D222220786D6C6E733A786D703D22687474703A2F2F6E732E61646F62652E636F6D2F7861702F312E302F2220786D6C6E733A64633D22687474703A2F2F7075726C2E6F72672F64632F656C656D656E74732F312E312F2220786D6C6E733A70686F746F73686F703D22687474703A2F2F6E732E61646F62652E636F6D2F70686F746F73686F702F312E302F2220786D6C6E733A786D704D4D3D22687474703A2F2F6E732E61646F62652E636F6D2F7861702F312E302F6D6D2F2220786D6C6E733A73744576743D22687474703A2F2F6E732E61646F62652E636F6D2F7861702F312E302F73547970652F5265736F757263654576656E74232220786D703A43726561746F72546F6F6C3D2241646F62652050686F746F73686F702032332E31202857696E646F7773292220786D703A437265617465446174653D22323032322D30372D31385431363A35333A31302B30383A30302220786D703A4D6F64696679446174653D22323032322D30372D32325431353A31383A30342B30383A30302220786D703A4D65746164617461446174653D22323032322D30372D32325431353A31383A30342B30383A3030222064633A666F726D61743D22696D6167652F706E67222070686F746F73686F703A436F6C6F724D6F64653D22332220786D704D4D3A496E7374616E636549443D22786D702E6969643A63643733313766302D356135642D366634332D383536622D3335376630353365333430622220786D704D4D3A446F63756D656E7449443D22786D702E6469643A31633338343566342D333036322D666134362D396136372D3930313838393938346165382220786D704D4D3A4F726967696E616C446F63756D656E7449443D22786D702E6469643A31633338343566342D333036322D666134362D396136372D393031383839393834616538223E203C786D704D4D3A486973746F72793E203C7264663A5365713E203C7264663A6C692073744576743A616374696F6E3D2263726561746564222073744576743A696E7374616E636549443D22786D702E6969643A31633338343566342D333036322D666134362D396136372D393031383839393834616538222073744576743A7768656E3D22323032322D30372D31385431363A35333A31302B30383A3030222073744576743A736F6674776172654167656E743D2241646F62652050686F746F73686F702032332E31202857696E646F777329222F3E203C7264663A6C692073744576743A616374696F6E3D227361766564222073744576743A696E7374616E636549443D22786D702E6969643A63643733313766302D356135642D366634332D383536622D333537663035336533343062222073744576743A7768656E3D22323032322D30372D32325431353A31383A30342B30383A3030222073744576743A736F6674776172654167656E743D2241646F62652050686F746F73686F702032332E33202857696E646F777329222073744576743A6368616E6765643D222F222F3E203C2F7264663A5365713E203C2F786D704D4D3A486973746F72793E203C2F7264663A4465736372697074696F6E3E203C2F7264663A5244463E203C2F783A786D706D6574613E203C3F787061636B657420656E643D2272223F3E4B62CF8A000001F0494441544889CD96BFCA1A4114C5CF6C66495030C40F52081222D887F800C1C6F4BE81B56F93C217102B9FC0D646C83BA85D8A209814AEBBDE7F29DC1163367E9222BB07A6993BC3FDEDB97367D699D9270004E03BCE72284702E02580B7CBE5F2D56AB5FAE1011800CD8365C3290015116366F3F964089409A7F910335322527F3559153815116166BD2E6B55E04C552D38573538151125A2DFCE5C151A42000833F3F17894FFE29C99C1CC1045D1BD6597B212916559A68F76AB9919E6F3F9EBD96CD622A237711C7B11D190B848DE7B38E7A22449F8E9E9693F1A8DBE0D06839FCEB9A23C976E151109678E1F805311C17ABD9646A3F1713A9D7EB967C1DF34994CDE31B3C4710C00B73686BB9655554EA7937A00279C5F887B674ECD0C699ACA76BBD582F843222231B390E7D6EE007762E628CB320ECE319E29AB730EDD6E178BC5E26BA7D3F9ECBD8FAFF614CA3907338B5495DAEDF67E3C1EC33917A06EF75E9C63664ED3548273CFC1C17B8FE170B8EFF7FBFB2449202245CBFEFCAABC11EAF53A9ACD26BCF79750019C0220557DC1CC8FC30140AD5643AD567B08EA1F64C8CBAAAA8E88E8BA5BC382B264F910332300149CBBBEE7CA020C794955D5CC243484A15CD7820C00F77A3DDDED76EA369BCD7B0001B20A8A9C73FE7038906BB55A1F70FE03AD045CFE7A7800D92FFA3B527311D6AC410000000049454E
lea rcx, [rbp - 0x21]
call fcn.140008f30
mov r12, qword [rbp - 0x11]
mov rcx, r12
call fcn.14002f248
mov rdi, rax
lea r10, [rbp - 0x21]
cmp qword [rbp - 9], 0xf
cmova r10, qword [rbp - 0x21]
mov rcx, rbx
nop dword [rax + rax]
inc rcx
cmp byte [r10 + rcx], 0
jne 0x140028cf0
shr rcx, 1
movsxd r15, ecx
mov r11, r14
test ecx, ecx
je 0x140028d47
inc r10
nop word [rax + rax]
mov edx, 0xffffffc9
cmp byte [r10 - 1], 0x41
cmovl edx, r13d
add dl, byte [r10 - 1]
shl dl, 4
mov eax, 0xffffffc9
cmp byte [r10], 0x41
cmovl eax, r13d
add dl, al
add dl, byte [r10]
mov byte [r11 + rdi], dl
inc r11
lea r10, [r10 + 2]
cmp r11, r15
jb 0x140028d10
shr r12, 1
lea r9, [rsi + 0x50]
mov r8d, r12d
mov rdx, rdi
mov rcx, qword [rsi + 0x10]
call fcn.14002c1c0
mov rcx, rdi
call fcn.14002f120
mov r8d, 0xebc
lea rdx, str.89504E470D0A1A0A0000000D49484452000000270000001308060000001348148E000000097048597300000B1300000B1301009A9C18000004EE69545874584D4C3A636F6D2E61646F62652E786D7000000000003C3F787061636B657420626567696E3D22EFBBBF222069643D2257354D304D7043656869487A7265537A4E54637A6B633964223F3E203C783A786D706D65746120786D6C6E733A783D2261646F62653A6E733A6D6574612F2220783A786D70746B3D2241646F626520584D5020436F726520372E312D633030302037392E396363633464652C20323032322F30332F31342D31313A32363A31392020202020202020223E203C7264663A52444620786D6C6E733A7264663D22687474703A2F2F7777772E77332E6F72672F313939392F30322F32322D7264662D73796E7461782D6E7323223E203C7264663A4465736372697074696F6E207264663A61626F75743D222220786D6C6E733A786D703D22687474703A2F2F6E732E61646F62652E636F6D2F7861702F312E302F2220786D6C6E733A64633D22687474703A2F2F7075726C2E6F72672F64632F656C656D656E74732F312E312F2220786D6C6E733A70686F746F73686F703D22687474703A2F2F6E732E61646F62652E636F6D2F70686F746F73686F702F312E302F2220786D6C6E733A786D704D4D3D22687474703A2F2F6E732E61646F62652E636F6D2F7861702F312E302F6D6D2F2220786D6C6E733A73744576743D22687474703A2F2F6E732E61646F62652E636F6D2F7861702F312E302F73547970652F5265736F757263654576656E74232220786D703A43726561746F72546F6F6C3D2241646F62652050686F746F73686F702032332E33202857696E646F7773292220786D703A437265617465446174653D22323032322D30372D32325431353A31343A31382B30383A30302220786D703A4D6F64696679446174653D22323032322D30372D32325431353A31353A33382B30383A30302220786D703A4D65746164617461446174653D22323032322D30372D32325431353A31353A33382B30383A3030222064633A666F726D61743D22696D6167652F706E67222070686F746F73686F703A436F6C6F724D6F64653D22332220786D704D4D3A496E7374616E636549443D22786D702E6969643A66383339383536662D656265382D336634372D393336312D6361383435333439663535342220786D704D4D3A446F63756D656E7449443D22786D702E6469643A66383339383536662D656265382D336634372D393336312D6361383435333439663535342220786D704D4D3A4F726967696E616C446F63756D656E7449443D22786D702E6469643A66383339383536662D656265382D336634372D393336312D636138343533343966353534223E203C786D704D4D3A486973746F72793E203C7264663A5365713E203C7264663A6C692073744576743A616374696F6E3D2263726561746564222073744576743A696E7374616E636549443D22786D702E6969643A66383339383536662D656265382D336634372D393336312D636138343533343966353534222073744576743A7768656E3D22323032322D30372D32325431353A31343A31382B30383A3030222073744576743A736F6674776172654167656E743D2241646F62652050686F746F73686F702032332E33202857696E646F777329222F3E203C2F7264663A5365713E203C2F786D704D4D3A486973746F72793E203C2F7264663A4465736372697074696F6E3E203C2F7264663A5244463E203C2F783A786D706D6574613E203C3F787061636B657420656E643D2272223F3E5182B49800000216494441544889CD95318E1A4110457F0F83C76DCB8CCCC80611223923019122ED299C7009DF80C04E49B9009213624EE00B7082454808AD6C13D9304C77559703666659C4021B58CC972A2955AB9F7E75752911F90E400398632F85DB8801BC05501F8FC78BC964F2C34F93360D01E0DD108E0010333311B19F26BC82C0D99487995932E7A8487044E488C865CEA148702242C698DCB922C065DD2366CE9DCBFA9C1400EE1500CBCC648C718575CE5A9BB7D561EF1C2EC18908B6DB2D369B0DACB5504A41A9D35FA3888099C1CC504A416B8D4AA58220084E9D2100060039E7D85AEB8EA7F5121CAF56ABD7D3E9F4E36C36FBB05EAFB53106CC2CCC0C117952EC791ECAE5328220505A6B89A2687B7777F7B3D7EBFD0AC3D000281DC1510A973B9725AF81B3CBE5B2B4582CC2D168F4E54CDDB31A0E875F5BADD62A0CC30440F908CE0220630CC5719C7FC2268D8B70CCECEF763B7BA6E6AC98D9327376DFA1D519873D74EE456D6D369BB6D3E93C0C06836FCCFC26CDCB9933504A29E71CB4D67FDBEDF6EF6AB56AF1388899B215CA44C44992B8E3DD7A090EF57A7DDBEFF7EF89E89E889E1D864389084404A552298F54EE041C1191DBED76EEA56F2E97EFFBF07DFF9AD26B95C389881311F8D8D3678057C3FD07650C9C248963E6BCADD9BB133C1DEF9BC0D56A35174591F8F3F9FC3D804F69DC549EE77900A0B57EE876BB916A341A9F01BCC3E386B8995236C4711CC471FCE71FAAFD64E53011E5920000000049454E44AE426082
lea rcx, [rbp - 0x21]
call fcn.140008f30
mov r12, qword [rbp - 0x11]
mov rcx, r12
call fcn.14002f248
mov rdi, rax
lea r10, [rbp - 0x21]
cmp qword [rbp - 9], 0xf
cmova r10, qword [rbp - 0x21]
mov rcx, rbx
nop dword [rax + rax]
inc rcx
cmp byte [r10 + rcx], 0
jne 0x140028da0
shr rcx, 1
movsxd r15, ecx
mov r11, r14
test ecx, ecx
je 0x140028df7
inc r10
nop word [rax + rax]
mov edx, 0xffffffc9
cmp byte [r10 - 1], 0x41
cmovl edx, r13d
add dl, byte [r10 - 1]
shl dl, 4
mov eax, 0xffffffc9
cmp byte [r10], 0x41
cmovl eax, r13d
add dl, al
add dl, byte [r10]
mov byte [r11 + rdi], dl
inc r11
lea r10, [r10 + 2]
cmp r11, r15
jb 0x140028dc0
shr r12, 1
lea r9, [rsi + 0x60]
mov r8d, r12d
mov rdx, rdi
mov rcx, qword [rsi + 0x10]
call fcn.14002c1c0
mov rcx, rdi
call fcn.14002f120
mov r8d, 0x1012
lea rdx, str.89504E470D0A1A0A0000000D49484452000000270000001308060000001348148E000000097048597300000B1300000B1301009A9C18000005BB69545874584D4C3A636F6D2E61646F62652E786D7000000000003C3F787061636B657420626567696E3D22EFBBBF222069643D2257354D304D7043656869487A7265537A4E54637A6B633964223F3E203C783A786D706D65746120786D6C6E733A783D2261646F62653A6E733A6D6574612F2220783A786D70746B3D2241646F626520584D5020436F726520372E312D633030302037392E396363633464652C20323032322F30332F31342D31313A32363A31392020202020202020223E203C7264663A52444620786D6C6E733A7264663D22687474703A2F2F7777772E77332E6F72672F313939392F30322F32322D7264662D73796E7461782D6E7323223E203C7264663A4465736372697074696F6E207264663A61626F75743D222220786D6C6E733A786D703D22687474703A2F2F6E732E61646F62652E636F6D2F7861702F312E302F2220786D6C6E733A64633D22687474703A2F2F7075726C2E6F72672F64632F656C656D656E74732F312E312F2220786D6C6E733A70686F746F73686F703D22687474703A2F2F6E732E61646F62652E636F6D2F70686F746F73686F702F312E302F2220786D6C6E733A786D704D4D3D22687474703A2F2F6E732E61646F62652E636F6D2F7861702F312E302F6D6D2F2220786D6C6E733A73744576743D22687474703A2F2F6E732E61646F62652E636F6D2F7861702F312E302F73547970652F5265736F757263654576656E74232220786D703A43726561746F72546F6F6C3D2241646F62652050686F746F73686F702032332E31202857696E646F7773292220786D703A437265617465446174653D22323032322D30372D31385431353A34343A34392B30383A30302220786D703A4D6F64696679446174653D22323032322D30372D32325431353A31363A35362B30383A30302220786D703A4D65746164617461446174653D22323032322D30372D32325431353A31363A35362B30383A3030222064633A666F726D61743D22696D6167652F706E67222070686F746F73686F703A436F6C6F724D6F64653D22332220786D704D4D3A496E7374616E636549443D22786D702E6969643A64306230323362642D303062322D356434362D383661392D3364303935306231613563322220786D704D4D3A446F63756D656E7449443D22786D702E6469643A30306638623066302D626334322D313934352D386533372D3336313336316236343236642220786D704D4D3A4F726967696E616C446F63756D656E7449443D22786D702E6469643A30306638623066302D626334322D313934352D386533372D333631333631623634323664223E203C786D704D4D3A486973746F72793E203C7264663A5365713E203C7264663A6C692073744576743A616374696F6E3D2263726561746564222073744576743A696E7374616E636549443D22786D702E6969643A30306638623066302D626334322D313934352D386533372D333631333631623634323664222073744576743A7768656E3D22323032322D30372D31385431353A34343A34392B30383A3030222073744576743A736F6674776172654167656E743D2241646F62652050686F746F73686F702032332E31202857696E646F777329222F3E203C7264663A6C692073744576743A616374696F6E3D227361766564222073744576743A696E7374616E636549443D22786D702E6969643A64306230323362642D303062322D356434362D383661392D336430393530623161356332222073744576743A7768656E3D22323032322D30372D32325431353A31363A35362B30383A3030222073744576743A736F6674776172654167656E743D2241646F62652050686F746F73686F702032332E33202857696E646F777329222073744576743A6368616E6765643D222F222F3E203C2F7264663A5365713E203C2F786D704D4D3A486973746F72793E203C2F7264663A4465736372697074696F6E3E203C2F7264663A5244463E203C2F783A786D706D6574613E203C3F787061636B657420656E643D2272223F3EFA60F5EB000001F4494441544889CD95BFAA1A4114C6BF9D1D12FF906C82A0C17251ACECEC2D7C86E41D2CD3FB0E7908218DB54F106BBB74A2A44BE042C480EBCE9E3F29DCD9DC98BBE6728BBB7E709AC3C0FCF8BE39730255FD0CA00E6087B302542306D004F06E3E9F7F5B2C165F6CDECCF25200A642380240CCCC44C4366F981B81CB721E6666F5CED12DC11191109178E7704B70AA4ACEB9C2B95B80F3E9113317CEF99CD31B807B0120636672CEC9B338A7AA008020B8FA4BFDE55C966545AC82B3732881530058AFD7AF57AB55E77038BC1111ABAA72FFF24B19631004810140ED767B3F1E8F7F0C0683430E79494A001C001211CEB24C2EA7B50C4E98199BCD469D73F16C367B7FCD82322D97CB8FBD5ECF596B1FBA877C8948E19C6F5E85CBDDA1FD7E2F4F01F300AA5A764F11AB738E9224293E619757199C8661887EBF9F6CB7DBAFD3E9F413115963CC55505585AA9A5AAD46711CFF9C4C264918861EAE2CD6ECBE738F8915411060381CDEC5717C773C1EC1CC0F1DFB070E00C23044A3D140B3D98431A5F3E657281311A7692A97BBB5140E00ACB588A2085114FD17EC09F20C4444723A9DE4B16FEE3954C0A9AAA82A2CCEDF8807AC12CE33709AA6C2CC45ACFEDD2980B06AB84EA723AD564BED6EB77B0BA09F57A532F9B4D4EBF5EFA3D1A81574BBDD0F005EE1CF86A84C7E929324799924C9AFDFC2C34B67FAD89F70000000
lea rcx, [rbp - 0x21]
call fcn.140008f30
mov r12, qword [rbp - 0x11]
mov rcx, r12
call fcn.14002f248
mov r15, rax
lea r10, [rbp - 0x21]
mov r13, qword [rbp - 9]
cmp r13, 0xf
seta byte [rbp - 0x49]
mov rdi, qword [rbp - 0x21]
cmova r10, rdi
inc rbx
cmp byte [r10 + rbx], 0
jne 0x140028e52
shr rbx, 1
movsxd r11, ebx
test ebx, ebx
je 0x140028ea7
inc r10
mov r8d, 0xffffffd0
nop
mov edx, 0xffffffc9
cmp byte [r10 - 1], 0x41
cmovl edx, r8d
add dl, byte [r10 - 1]
shl dl, 4
mov eax, 0xffffffc9
cmp byte [r10], 0x41
cmovl eax, r8d
add dl, al
add dl, byte [r10]
mov byte [r14 + r15], dl
inc r14
lea r10, [r10 + 2]
cmp r14, r11
jb 0x140028e70
shr r12, 1
lea r9, [rsi + 0x58]
mov r8d, r12d
mov rdx, r15
mov rcx, qword [rsi + 0x10]
call fcn.14002c1c0
mov rcx, r15
call fcn.14002f120
mov rcx, qword [rsi + 0x38]
mov rax, qword [rcx]
lea rdx, [rbp - 0x31]
call qword [rax + 0x20]
cvttss2si ecx, dword [rsi + 0x134]
lea eax, [rcx - 0x5a]
mov dword [rsi + 0xa0], eax
mov dword [rsi + 0xa4], 5
movd xmm0, eax
cvtdq2ps xmm0, xmm0
addss xmm0, dword [rbp - 0x31]
cvttss2si eax, xmm0
mov dword [rsi + 0xa8], eax
movss xmm1, dword [rbp - 0x2d]
addss xmm1, dword [0x14007b9c8]
cvttss2si edx, xmm1
mov dword [rsi + 0xac], edx
lea eax, [rcx - 0x32]
mov dword [rsi + 0xb0], eax
mov dword [rsi + 0xb4], 5
movd xmm0, eax
cvtdq2ps xmm0, xmm0
addss xmm0, dword [rbp - 0x31]
cvttss2si eax, xmm0
mov dword [rsi + 0xb8], eax
mov dword [rsi + 0xbc], edx
mov r8, rsi
xor edx, edx
lea rcx, [0x14002a580]
call fcn.140043620
mov qword [rsi + 0x110], rax
xor edx, edx
mov rcx, qword [rbp - 0x39]
call qword [sym.imp.USER32.dll_GetWindowThreadProcessId]
mov ebx, eax
cmp qword [rsi + 0x100], 0
jne 0x140028fb6
mov r9d, eax
xor r8d, r8d
lea rdx, [0x140028490]
lea ecx, [r8 + 3]
call qword [sym.imp.USER32.dll_SetWindowsHookExW]
mov qword [rsi + 0x100], rax
mov r9d, ebx
xor r8d, r8d
lea rdx, [0x1400285e0]
lea ecx, [r8 + 4]
call qword [sym.imp.USER32.dll_SetWindowsHookExW]
mov qword [rsi + 0x108], rax
cmp byte [rbp - 0x49], 0
je 0x14002902f
lea rdx, [r13 + 1]
mov rax, rdi
cmp rdx, 0x1000
jb 0x140028fe5
add rdx, 0x27
mov rdi, qword [rdi - 8]
sub rax, rdi
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x140029091
mov rcx, rdi
call fcn.14002f120
jmp 0x14002902f
mov rax, qword [r15 + 0x10]
mov qword [rsi + 0x10], rax
mov rcx, r12
call qword [sym.imp.USER32.dll_LockWindowUpdate]
mov qword [rbp - 0x39], rsi
lea rcx, [r15 + 0xd8]
mov rdx, qword [rcx + 8]
cmp rdx, qword [rcx + 0x10]
je 0x14002901f
mov qword [rdx], rsi
add qword [rcx + 8], 8
jmp 0x140029028
lea r8, [rbp - 0x39]
call fcn.14002b050
mov qword [rsi + 0xf0], r15
mov qword [rbp - 0x39], rsi
mov rdx, qword [0x14008cf48]
cmp rdx, qword [0x14008cf50]
je 0x140029050
mov qword [rdx], rsi
add qword [0x14008cf48], 8
jmp 0x140029060
lea r8, [rbp - 0x39]
lea rcx, [0x14008cf40]
call fcn.14002b050
mov byte [0x14008c6cb], 0
mov rax, rsi
mov rcx, qword [rbp - 1]
xor rcx, rsp
call fcn.14002f100
mov rbx, qword [rsp + 0xf0]
add rsp, 0xa0
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret
call fcn.140040b44
nop
int3