Function at 0x420730
Capabilities:
Contain obfuscated stackstrings
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x2e8
mov esi, dword [ebp + 0x14]
mov eax, dword [ebp + 0x10]
mov dword [esp + 0x5c], 0
mov dword [esp + 0x58], 0
mov dword [esp + 0x48], 0
mov dword [esp + 0x148], 0x79cec7dd
mov byte [esp + 0x14c], 0x7c
mov dword [esp + 0x14d], 0
xor ecx, ecx
nop
nop
nop
mov edx, ecx
add dl, 0x94
xor dl, byte [esp + ecx + 0x148]
add dl, 0x1c
mov byte [esp + ecx + 0x148], dl
inc ecx
cmp ecx, 9
jne 0x420780
mov ecx, dword [ebp + 0xc]
mov ebx, dword [ecx]
movzx ecx, byte [esp + 0x148]
test cl, cl
je 0x4207cb
lea edx, [esp + 0x149]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [ebx], cl
inc ebx
movzx ecx, byte [edx]
inc edx
test cl, cl
jne 0x4207c0
mov byte [ebx], 0
mov dword [esp + 0x3c], 0
mov dword [esp + 0x38], 0
mov dword [esp + 0x34], 0
mov dword [esp + 0x30], 0
lea ecx, [esp + 0x48]
lea edx, [esp + 0x58]
lea edi, [esp + 0x30]
push ecx
push edx
push edi
push dword [esi + 0x10]
push eax
push dword [esi + 0xc]
call fcn.00422e30
add esp, 0x18
test al, al
je 0x4219e7
mov edi, ebx
mov dword [esp + 0x148], 0x9bfbf5f4
mov byte [esp + 0x14c], 0x60
mov dword [esp + 0x14d], 0
xor eax, eax
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + ecx + 0x148]
mov ebx, eax
and ebx, 0x12
mov edx, ecx
xor edx, 0x5f0f7619
add edx, ebx
lea ebx, [edx + edx]
not ebx
add ebx, edx
or edx, esi
not esi
or ebx, esi
and edx, ebx
mov esi, edx
and esi, 2
xor edx, 0x82
lea edx, [edx + esi*2]
inc dl
mov byte [esp + ecx + 0x148], dl
inc ecx
add eax, 2
cmp ecx, 9
jne 0x420840
movzx eax, byte [esp + 0x148]
test al, al
je 0x4208ad
lea ecx, [esp + 0x149]
mov edx, edi
nop
nop
nop
nop
nop
mov byte [edx], al
inc edx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x4208a0
jmp 0x4208af
mov edx, edi
mov edi, edx
mov byte [edx], 0
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x58]
mov edx, dword [esp + 0x5c]
mov dword [esp + 0x13c], edx
mov dword [esp + 0x138], ecx
mov dword [esp + 0x140], eax
mov dword [esp + 0x148], 0xaea65299
mov dword [esp + 0x14c], 0xb5b25788
mov dword [esp + 0x150], 0x938f865d
mov dword [esp + 0x154], 0x90919293
mov dword [esp + 0x158], 0xbe87a560
mov dword [esp + 0x15c], 0xb5ba848e
mov dword [esp + 0x160], 0xa4a5a6a7
mov dword [esp + 0x164], 0xbca99196
mov dword [esp + 0x168], 0x86ab76ab
mov dword [esp + 0x16c], 0x707092a3
mov dword [esp + 0x170], 0x92b98cac
mov dword [esp + 0x174], 0xbba0957a
mov dword [esp + 0x178], 0x44768640
mov dword [esp + 0x17c], 0x84854642
mov dword [esp + 0x180], 0x83594e8f
mov dword [esp + 0x184], 0x40414243
mov dword [esp + 0x188], 0x6e63656b
mov dword [esp + 0x18c], 0x58557c45
mov dword [esp + 0x190], 0x544f6d78
mov dword [esp + 0x194], 0x59515253
mov dword [esp + 0x198], 0x6c6d6e7a
mov dword [esp + 0x19c], 0xae47626b
mov dword [esp + 0x1a0], 0x6f6a4a6e
mov dword [esp + 0x1a4], 0x4d6e4d72
mov dword [esp + 0x1a8], 0x7c7d7e7f
mov dword [esp + 0x1ac], 0x4676724f
mov dword [esp + 0x1b0], 0x416b4677
mov dword [esp + 0x1b4], 0x707d4c7b
mov dword [esp + 0x1b8], 0xc0d0e0f
mov dword [esp + 0x1bc], 0x1c090a0b
mov dword [esp + 0x1c0], 0x1a37ca0b
mov dword [esp + 0x1c4], 0x10203
mov dword [esp + 0x1c8], 0x2731202d
mov dword [esp + 0x1cc], 0x132a161b
mov byte [esp + 0x1d0], 0x48
mov dword [esp + 0x1d4], 0
mov dword [esp + 0x1d1], 0
mov eax, 0xd0
mov ecx, 0x2f
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov esi, ecx
and esi, 0x7e
mov edx, eax
and edx, 0x81
or edx, esi
xor dl, byte [esp + eax + 0x78]
xor dl, 0x7e
add dl, 0xf0
mov byte [esp + eax + 0x78], dl
inc eax
dec ecx
cmp eax, 0x160
jne 0x420a80
mov dword [esp + 0x60], 0xc8f6e2e2
mov dword [esp + 0x64], 0x68bb1550
mov dword [esp + 0x68], 0x5f74b8f8
mov dword [esp + 0x6c], 0xbbba4544
mov dword [esp + 0x70], 0xc72aba3d
mov dword [esp + 0x74], 0xaba34404
mov dword [esp + 0x78], 0xb7b6b1b0
mov dword [esp + 0x7c], 0x13ba4c0c
mov dword [esp + 0x80], 0xcf66d2f
mov dword [esp + 0x84], 0x9f9e6a0e
mov dword [esp + 0x88], 0x9b9a9d9c
mov dword [esp + 0x8c], 0xa7a69998
mov dword [esp + 0x90], 0x18263232
mov dword [esp + 0x94], 0x6a2ad580
mov dword [esp + 0x98], 0x926929a2
mov dword [esp + 0x9c], 0x8b8a9594
mov dword [esp + 0xa0], 0x37aed830
mov dword [esp + 0xa4], 0x83e6c975
mov dword [esp + 0xa8], 0x870f7c38
mov dword [esp + 0xac], 0xa3fa8584
mov dword [esp + 0xb0], 0xfffef9e0
mov dword [esp + 0xb4], 0x490d45fc
mov dword [esp + 0xb8], 0x45094990
mov dword [esp + 0xbc], 0x1154dac
mov dword [esp + 0xc0], 0xefeee9e8
mov dword [esp + 0xc4], 0x87a61050
mov dword [esp + 0xc8], 0x971f58e0
mov dword [esp + 0xcc], 0xdb20de5c
mov dword [esp + 0xd0], 0xdfded9d8
mov dword [esp + 0xd4], 0x6bd2dddc
mov dword [esp + 0xd8], 0xa2d5df29
mov dword [esp + 0xdc], 0xcbcad5d4
mov dword [esp + 0xe0], 0xab723670
mov dword [esp + 0xe4], 0xe29375cc
mov byte [esp + 0xe8], 0xc0
mov word [esp + 0xed], 0
mov dword [esp + 0xe9], 0
mov edx, 0xf2
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [esp + edx - 0x92]
mov ebx, eax
mov esi, eax
and ebx, edx
mov eax, ebx
or al, 0xfd
inc al
mov ecx, ebx
and cl, 0xfd
mul cl
mov ecx, eax
mov eax, esi
add cl, al
mov eax, ebx
shr al, 1
and al, 1
or bl, 2
mul bl
add al, al
sub cl, al
movzx eax, cl
add eax, edx
add al, 0x46
mov byte [esp + edx - 0x92], al
inc edx
cmp edx, 0x181
jne 0x420c30
lea eax, [esp + 0x148]
lea edx, [esp + 0x60]
lea ecx, [esp + 0x138]
push eax
push 0x88
push edx
lea eax, [esp + 0x3c]
push eax
call fcn.004411a0
mov dword [esp + 0x134], edx
mov dword [esp + 0x130], eax
xor esi, esi
or eax, edx
je 0x420d2d
mov dword [esp + 0x148], 0xfa4a7b0
mov byte [esp + 0x14c], 0x18
mov word [esp + 0x14d], 0
mov byte [esp + 0x14f], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, esi
and edx, 6
mov ecx, eax
xor ecx, 0x3b
add ecx, edx
xor cl, byte [esp + eax + 0x148]
add cl, 0xd9
mov byte [esp + eax + 0x148], cl
inc eax
add esi, 2
cmp eax, 8
jne 0x420ce0
movzx eax, byte [esp + 0x148]
test al, al
mov ebx, edi
je 0x420d3c
lea ecx, [esp + 0x149]
lea edx, [esp + 0x30]
nop
mov byte [ebx], al
inc ebx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x420d20
jmp 0x420d40
mov dword [esp + 8], 0
mov ebx, edi
jmp 0x4219ef
lea edx, [esp + 0x30]
mov byte [ebx], 0
lea eax, [esp + 0x130]
lea ecx, [esp + 0x138]
push 0
push 8
push eax
push edx
call fcn.004411a0
mov dword [esp + 0x12c], edx
mov dword [esp + 0x128], eax
or eax, edx
je 0x4219e7
mov dword [esp + 0x148], 0xf154ac5e
mov byte [esp + 0x14c], 0xcc
mov dword [esp + 0x14d], 0
mov byte [esp + 0x151], 0
mov eax, 0x8d1452b7
nop
nop
nop
movzx ecx, byte [esp + eax + 0x72ebae91]
lea edx, [eax + 0x72ebad9b]
and edx, ecx
add ecx, eax
add edx, edx
mov esi, ecx
sub esi, edx
and ecx, 1
xor esi, 1
lea ecx, [esi + ecx*2]
mov byte [esp + eax + 0x72ebae91], cl
inc eax
cmp eax, 0x8d1452c1
jne 0x420da0
movzx eax, byte [esp + 0x148]
test al, al
je 0x420dfb
lea ecx, [esp + 0x149]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [ebx], al
inc ebx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x420df0
mov byte [ebx], 0
lea eax, [esp + 0x128]
lea edx, [esp + 0x4c]
lea ecx, [esp + 0x30]
push 0
push 8
push eax
push edx
call fcn.00440580
mov eax, dword [esp + 0x4c]
cmp eax, dword [esp + 0x50]
je 0x4219e7
mov dword [esp + 0x148], 0xfba2a3af
mov byte [esp + 0x14c], 0xf0
mov dword [esp + 0x14d], 0
mov eax, 0xfd
mov ecx, 2
nop
nop
mov esi, ecx
and esi, 0x60
mov edx, eax
and edx, 0x9f
or edx, esi
xor dl, byte [esp + eax + 0x4b]
xor dl, 0x60
add dl, 0xf
mov byte [esp + eax + 0x4b], dl
inc eax
dec ecx
cmp eax, 0x106
jne 0x420e50
movzx eax, byte [esp + 0x148]
test al, al
je 0x420e9b
lea ecx, [esp + 0x149]
nop
nop
nop
nop
nop
nop
nop
mov byte [ebx], al
inc ebx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x420e90
mov byte [ebx], 0
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x50]
mov dword [esp + 0xf4], ecx
cmp eax, ecx
je 0x4219e7
mov dword [esp + 8], 0
lea edi, [esp + 0x30]
jmp 0x420f07
mov dword [esp], 0
push dword [esp + 0x44]
call fcn.00404de0
add esp, 4
mov eax, dword [esp + 8]
and al, 1
or al, byte [esp]
mov dword [esp + 8], eax
mov eax, dword [esp + 0xf8]
add eax, 8
cmp eax, dword [esp + 0xf4]
je 0x421a7f
mov ecx, dword [eax]
mov dword [esp + 0xc], ecx
mov dword [esp + 0xf8], eax
mov eax, dword [eax + 4]
mov dword [esp + 0x2c], eax
push 0x198
push 0
lea eax, [esp + 0x150]
push eax
call fcn.0040cc40
add esp, 0xc
xor eax, eax
jmp 0x420f4d
mov eax, dword [esp]
inc eax
cmp eax, 0xb
je 0x421190
mov dword [esp], eax
mov ecx, edi
push 0
push 0
push 0x198
lea eax, [esp + 0x154]
push eax
push dword [esp + 0x3c]
push dword [esp + 0x20]
call fcn.004403c0
test eax, eax
js 0x420f40
cmp byte [esp + 0x218], 0
sete al
xor al, 0x31
cmp byte [esp + 0x219], 0
mov byte [esp + 0x10], al
sete cl
xor cl, 0x31
mov byte [esp + 0x11], cl
cmp byte [esp + 0x21a], 0
sete cl
xor cl, 0x31
mov byte [esp + 0x12], cl
cmp byte [esp + 0x2d8], 0
sete cl
xor cl, 0x31
mov byte [esp + 0x13], cl
mov word [esp + 0x14], 0xa
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [ebx + ecx], al
movzx eax, byte [esp + ecx + 0x11]
inc ecx
test al, al
jne 0x420fd0
mov byte [ebx + ecx], 0
movzx eax, byte [esp + 0x21a]
test al, al
jne 0x4211b0
mov edx, dword [esp + 0x18c]
or edx, dword [esp + 0x188]
je 0x4211b0
add ebx, ecx
mov dword [esp + 4], ebx
mov dword [esp + 0x60], 0x47e5fccd
mov byte [esp + 0x64], 0x58
lea eax, [esp + 0x65]
mov dword [eax + 3], 0
mov dword [eax], 0
mov eax, 0x15fdb7ef
mov ecx, 0x10
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + eax - 0x15fdb78f]
mov edx, ecx
xor edx, eax
and edx, esi
xor edx, eax
mov esi, 0x6df497ab
sub esi, edx
or esi, 1
add esi, edx
add esi, 0x920b6855
mov edi, esi
and edi, 0xfd
mov ebx, esi
and ebx, 2
or esi, 2
imul esi, ebx
xor ebx, 2
imul ebx, edi
lea edi, [edx + edx]
and edi, 2
sub edx, edi
add edx, esi
add edx, ebx
add dl, 0x55
mov byte [esp + eax - 0x15fdb78f], dl
inc eax
dec ecx
cmp eax, 0x15fdb7fb
jne 0x421040
movzx eax, byte [esp + 0x60]
test al, al
je 0x4210c0
lea ecx, [esp + 0x61]
mov ebx, dword [esp + 4]
nop
nop
nop
nop
nop
mov byte [ebx], al
inc ebx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x4210b0
jmp 0x4210c4
mov ebx, dword [esp + 4]
mov byte [ebx], 0
mov dword [esp + 0x64], 0xffffffff
mov dword [esp + 0x60], 0xff676980
mov dword [esp + 0x100], 0x54554a4b
xor eax, eax
lea edi, [esp + 0x30]
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 0x100]
lea esi, [eax - 0x7bc7c892]
mov edx, 0x91
sub edx, eax
xor edx, esi
and edx, ecx
xor edx, esi
not edx
and edx, esi
add ecx, eax
add edx, edx
sub ecx, edx
add cl, 0x48
mov byte [esp + eax + 0x100], cl
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
cmp eax, 4
jb 0x4210f0
mov eax, dword [0x452d58]
test eax, eax
je 0x420f40
mov ecx, dword [esp + 0x100]
xor edx, edx
mov esi, dword [0x452d5c]
nop
nop
nop
nop
nop
cmp dword [esi + edx*8], 0xf8fd61b8
je 0x421163
inc edx
cmp eax, edx
jne 0x421150
jmp 0x420f40
mov eax, dword [esi + edx*8 + 4]
cmp eax, ecx
je 0x420f40
lea ecx, [esp + 0x60]
push ecx
push 0
push 2
push dword [0x452d60]
push eax
call fcn.004427e0
add esp, 0x14
jmp 0x420f40
movzx eax, byte [esp + 0x21a]
test al, al
jne 0x4211ba
jmp 0x420ef0
add ebx, ecx
test al, al
je 0x420ef0
mov dword [esp + 4], ebx
call fcn.00404fa0
mov dword [esp + 0x44], eax
push eax
call fcn.00404960
add esp, 4
mov dword [esp + 0x40], eax
mov dword [esp + 0x60], 0x1dba7a1
mov byte [esp + 0x64], 0x74
lea eax, [esp + 0x65]
mov word [eax + 4], 0
mov dword [eax], 0
mov eax, 0x547ff73e
mov esi, 0x51ffdcf8
mov edx, 0x547ff73f
mov dword [esp], eax
mov dword [esp + 0xfc], edx
mov dword [esp + 0xc], esi
movzx ebx, byte [esp + eax - 0x547ff6de]
mov dword [esp + 0x2c], ebx
mov eax, dword [esp]
and eax, ebx
add eax, eax
mov edx, eax
sub edx, ebx
lea edi, [esi + edx]
add edi, 0x59802bc9
or edi, 0x59802bc9
add edi, ebx
mov edx, edi
sub edx, eax
mov ecx, dword [esp]
lea ebx, [ecx + edx]
inc ebx
mov esi, ebx
not esi
and esi, 2
mov edx, ebx
and edx, 0xfffffffd
imul edx, esi
mov ecx, dword [esp + 0x2c]
sub ecx, eax
mov esi, dword [esp]
add esi, ecx
and esi, 0xd9802bc9
lea esi, [eax + esi*2]
sub esi, edx
mov edx, dword [esp + 0xfc]
add edi, edx
sub edi, eax
or ebx, 2
shr edi, 1
and edi, 1
imul edi, ebx
add edi, edi
sub esi, edi
sub esi, dword [esp + 0x2c]
mov eax, dword [esp]
add eax, ecx
dec eax
and eax, 1
add esi, dword [esp + 0xc]
or esi, 1
sub eax, esi
mov esi, dword [esp + 0xc]
mov ecx, dword [esp]
mov byte [esp + ecx - 0x547ff6de], al
mov eax, dword [esp]
inc eax
dec esi
inc edx
cmp eax, 0x547ff749
jne 0x421200
movzx eax, byte [esp + 0x60]
test al, al
je 0x4212e0
lea ecx, [esp + 0x61]
mov edx, dword [esp + 4]
lea edi, [esp + 0x30]
nop
nop
nop
nop
nop
nop
mov byte [edx], al
inc edx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x4212d0
jmp 0x4212e8
mov edx, dword [esp + 4]
lea edi, [esp + 0x30]
mov dword [esp + 4], edx
mov byte [edx], 0
mov eax, dword [esp + 0x180]
mov edx, dword [esp + 0x184]
xor ebx, ebx
mov ecx, eax
or ecx, edx
je 0x421330
mov ecx, edi
push 0
push 0
push 0x40
lea esi, [esp + 0x6c]
push esi
push edx
push eax
call fcn.004403c0
test eax, eax
js 0x421330
mov ecx, edi
mov edx, esi
push dword [esp + 0x40]
call fcn.004236c0
add esp, 4
jmp 0x421332
xor eax, eax
mov dword [esp + 0x60], 0x916c7c71
mov byte [esp + 0x64], 0x9c
lea ecx, [esp + 0x65]
mov byte [ecx + 2], 0
mov word [ecx], 0
xor ecx, ecx
nop
nop
movzx esi, byte [esp + ecx + 0x60]
mov edi, ebx
and edi, 4
mov edx, ecx
xor edx, 0x1ab611da
add edx, edi
mov edi, edx
and edi, esi
add edx, esi
add edi, edi
sub edx, edi
add dl, 0xbe
mov byte [esp + ecx + 0x60], dl
inc ecx
add ebx, 2
cmp ecx, 8
jne 0x421350
movzx ecx, byte [esp + 0x60]
test cl, cl
je 0x4213b0
lea edx, [esp + 0x61]
mov ebx, dword [esp + 4]
lea edi, [esp + 0x30]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [ebx], cl
inc ebx
movzx ecx, byte [edx]
inc edx
test cl, cl
jne 0x4213a0
jmp 0x4213b8
mov ebx, dword [esp + 4]
lea edi, [esp + 0x30]
mov byte [ebx], 0
test al, al
je 0x420ed0
push dword [esp + 0x40]
call fcn.00404da0
add esp, 4
test eax, eax
je 0x421552
mov dword [esp + 4], ebx
mov eax, dword [esp + 0x2a0]
mov edx, dword [esp + 0x2a4]
add eax, 0x28
adc edx, 0
mov ecx, edi
push 0
push 0
push 8
lea esi, [esp + 0x12c]
push esi
push edx
push eax
call fcn.004403c0
test eax, eax
js 0x42161c
mov eax, dword [esp + 0x120]
mov edx, dword [esp + 0x124]
add eax, 0x10
adc edx, 0
mov ecx, edi
push 0
push 0
push 8
lea esi, [esp + 0x124]
push esi
push edx
push eax
call fcn.004403c0
test eax, eax
js 0x42161c
mov eax, dword [esp + 0x118]
mov edx, dword [esp + 0x11c]
add eax, 0x10
adc edx, 0
mov ecx, edi
push 0
push 0
push 0x18
lea esi, [esp + 0x10c]
push esi
push edx
push eax
call fcn.004403c0
test eax, eax
js 0x42161c
cmp byte [esp + 0x117], 0
lea eax, [esp + 0x100]
mov dword [esp], eax
js 0x42155c
mov dword [esp + 0x10], 0xd17bcf1b
mov dword [esp + 0x14], 0xd560d377
mov dword [esp + 0x18], 0xd912d734
mov dword [esp + 0x1c], 0xdd6edb7b
mov dword [esp + 0x20], 0xa102df7f
mov word [esp + 0x24], 0xa3a0
lea eax, [esp + 0x26]
mov word [eax + 4], 0
mov dword [eax], 0
mov eax, 0x2d
mov ecx, 0xd2
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + eax - 0x1d]
mov edx, eax
xor edx, ecx
and edx, esi
xor edx, ecx
mov bl, 0x1e
sub bl, dl
mov byte [esp + eax - 0x1d], bl
inc eax
dec ecx
cmp eax, 0x49
jne 0x4214e0
movzx esi, word [esp + 0x10]
test si, si
je 0x4215b4
lea eax, [esp + 0x10]
mov edx, dword [esp]
mov ecx, edx
jmp 0x42152c
movzx esi, word [eax]
test si, si
je 0x4215b9
movzx edi, word [ecx]
test di, di
je 0x4215f7
add ecx, 2
add eax, 2
lea ebx, [edx + 2]
cmp di, si
je 0x42154a
mov edx, ebx
mov ecx, ebx
je 0x421520
lea eax, [esp + 0x10]
jmp 0x421520
mov al, 1
mov dword [esp], eax
jmp 0x420ed7
mov esi, dword [esp + 0x100]
mov ebx, dword [esp + 0x104]
mov eax, esi
or eax, ebx
je 0x42161c
mov eax, dword [esp + 0x108]
lea edi, [eax*2 + 2]
inc eax
mov eax, edi
jns 0x42158c
mov eax, 0xffffffff
push eax
call fcn.0040cbc0
add esp, 4
lea ecx, [esp + 0x30]
push 0
push 0
push edi
mov dword [esp + 0xc], eax
push eax
push ebx
push esi
call fcn.004403c0
test eax, eax
jns 0x42148c
jmp 0x42161c
mov edx, dword [esp]
jmp 0x4215c1
lea ebx, [esp + 0x60]
test edx, edx
je 0x4215fb
movzx esi, word [edx + 0x14]
lea ebx, [esp + 0x60]
test si, si
je 0x4215fb
lea eax, [edx + 0x14]
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp si, 0x5c
je 0x421927
movzx esi, word [edx + ecx + 0x16]
add ecx, 2
test si, si
jne 0x4215e0
lea ebx, [esp + 0x60]
cmp byte [esp + 0x117], 0
jns 0x421610
push dword [esp]
call fcn.0040cbd0
add esp, 4
lea edx, [esp + 0x60]
cmp edx, ebx
jne 0x4216b6
mov dword [esp + 0x10], 0x43ac4189
mov dword [esp + 0x14], 0x47a945a7
mov dword [esp + 0x18], 0x4ba449af
mov dword [esp + 0x1c], 0x4fda4da5
mov dword [esp + 0x20], 0x7372719f
mov dword [esp + 0x24], 0
mov eax, 0x70f79a10
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax - 0x70f79a00]
xor ecx, eax
add ecx, 0xcb29fdaf
mov edx, ecx
and edx, 1
xor ecx, 1
lea ecx, [ecx + edx*2]
mov byte [esp + eax - 0x70f79a00], cl
inc eax
cmp eax, 0x70f79a28
jne 0x421660
movzx eax, word [esp + 0x10]
lea edx, [esp + 0x60]
mov ebx, edx
test ax, ax
je 0x4216b1
lea ecx, [esp + 0x12]
mov ebx, edx
mov word [ebx], ax
add ebx, 2
movzx eax, word [ecx]
add ecx, 2
test ax, ax
jne 0x4216a0
mov word [ebx], 0
mov esi, ebx
sub esi, edx
mov ecx, esi
shr ecx, 2
mov eax, edx
mov edx, dword [esp + 4]
mov edi, edx
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
mov ecx, esi
and ecx, 0xfffffffc
add edx, ecx
lea eax, [esp + ecx + 0x60]
mov dword [esp], esi
mov ecx, esi
mov esi, edx
shr ecx, 1
and ecx, 1
mov edx, eax
mov edi, esi
xchg esi, edx
rep movsw word es:[edi], word [esi]
xchg esi, edx
test bl, 1
je 0x4216ff
mov ecx, dword [esp]
and ecx, 2
movzx edx, byte [eax + ecx]
mov byte [esi + ecx], dl
mov dword [esp + 0x10], 0x7b5745ee
mov word [esp + 0x14], 0xf5e2
lea eax, [esp + 0x26]
mov byte [eax - 0xc], 0
mov dword [eax - 0x10], 0
mov eax, 0xac7732d6
mov ecx, 0x5388cd29
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + eax + 0x5388cd3a]
mov edi, eax
and edi, esi
mov edx, edi
and edx, 2
mov ebx, edi
or edi, 2
imul edi, edx
xor edx, 2
and ebx, 0xfffffffd
imul ebx, edx
add edi, ebx
mov ebx, edi
not ebx
and ebx, eax
and edi, ecx
sub ebx, edi
add ebx, esi
mov edx, ebx
and edx, 0x51
add edx, edx
xor ebx, 0x2e
sub edx, ebx
mov byte [esp + eax + 0x5388cd3a], dl
inc eax
dec ecx
cmp eax, 0xac7732e1
jne 0x421730
mov ebx, dword [esp + 4]
mov esi, dword [esp]
add ebx, esi
movzx eax, byte [esp + 0x10]
test al, al
je 0x4217ad
lea ecx, [esp + 0x11]
mov edx, dword [ebp + 0x14]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [ebx], al
inc ebx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x4217a0
jmp 0x4217b0
mov edx, dword [ebp + 0x14]
mov byte [ebx], 0
mov edi, dword [edx]
mov eax, 0xfffffffe
nop
nop
nop
nop
nop
nop
cmp word [edi + eax + 2], 0
lea eax, [eax + 2]
jne 0x4217c0
sar eax, 1
sar esi, 1
lea ecx, [esi + eax]
add ecx, 0xa
test ecx, ecx
jns 0x4217e0
mov eax, 0xffffffff
jmp 0x4217e9
add esi, eax
lea eax, [esi*2 + 0x14]
push eax
call fcn.0040cbc0
add esp, 4
movzx ecx, word [edi]
mov esi, eax
test cx, cx
je 0x421821
add edi, 2
mov esi, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [esi], cx
add esi, 2
movzx ecx, word [edi]
add edi, 2
test cx, cx
jne 0x421810
mov word [esi], 0x2f
mov dword [esp + 0x10], 0xc170c715
mov dword [esp + 0x14], 0xcd5bc36f
mov dword [esp + 0x18], 0xc952cf1a
mov dword [esp + 0x1c], 0xb556cb50
mov word [esp + 0x20], 0xb7b4
mov dword [esp + 0x22], 0
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, ecx
add dl, 0x31
xor dl, byte [esp + ecx + 0x10]
add dl, 0xb
mov byte [esp + ecx + 0x10], dl
inc ecx
cmp ecx, 0x16
jne 0x421860
add esi, 2
movzx ecx, word [esp + 0x60]
test cx, cx
je 0x4218a1
lea edx, [esp + 0x62]
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [esi], cx
add esi, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x421890
mov word [esi], 0
movzx ecx, word [esp + 0x10]
test cx, cx
mov dword [esp + 0xc], eax
je 0x4218d1
lea edx, [esp + 0x12]
nop
nop
nop
nop
nop
nop
nop
nop
mov word [esi], cx
add esi, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x4218c0
mov word [esi], 0
mov esi, 0xffffffff
push dword [esp + 0x44]
call fcn.00405b70
add esp, 4
mov edi, eax
nop
nop
nop
nop
nop
nop
nop
cmp byte [edi + esi + 1], 0
lea esi, [esi + 1]
jne 0x4218f0
mov ecx, dword [ebp + 8]
push esi
push edi
mov esi, dword [esp + 0x14]
push esi
call fcn.0040d4c0
mov dword [esp], eax
push edi
call fcn.00405c00
add esp, 4
push esi
call fcn.0040cbd0
add esp, 4
lea edi, [esp + 0x30]
jmp 0x420ed7
lea edx, [esp + 0x60]
mov ebx, edx
test ecx, ecx
je 0x4219cf
sar ecx, 1
mov edi, ecx
and edi, 3
je 0x421973
xor esi, esi
mov ebx, edx
mov dword [esp + 0xc], edi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, word [eax]
xor edx, edx
test di, di
setne dl
lea eax, [eax + edx*2]
mov word [ebx], di
mov edi, dword [esp + 0xc]
add ebx, 2
inc esi
cmp edi, esi
jne 0x421950
mov edi, ecx
sub edi, esi
jmp 0x421977
mov ebx, edx
mov edi, ecx
dec ecx
cmp ecx, 3
jb 0x4219cf
movzx ecx, word [eax]
xor edx, edx
test cx, cx
setne dl
mov word [ebx], cx
lea ecx, [eax + edx*2]
movzx eax, word [eax + edx*2]
xor edx, edx
test ax, ax
setne dl
mov word [ebx + 2], ax
lea eax, [ecx + edx*2]
movzx ecx, word [ecx + edx*2]
xor edx, edx
test cx, cx
setne dl
mov word [ebx + 4], cx
lea ecx, [eax + edx*2]
movzx edx, word [eax + edx*2]
xor eax, eax
test dx, dx
setne al
lea eax, [ecx + eax*2]
mov word [ebx + 6], dx
add ebx, 8
add edi, 0xfffffffc
jne 0x42197d
mov word [ebx], 0
cmp byte [esp + 0x117], 0
jns 0x421610
jmp 0x421605
mov dword [esp + 8], 0
lea ecx, [esp + 0x30]
call fcn.0043faa0
mov dword [esp + 0x148], 0xc97e796d
mov byte [esp + 0x14c], 0xec
mov dword [esp + 0x14d], 0
mov word [esp + 0x151], 0
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, ecx
add al, 0xac
xor al, byte [esp + ecx + 0x148]
add al, 0xa4
mov byte [esp + ecx + 0x148], al
inc ecx
cmp ecx, 0xb
jne 0x421a30
movzx eax, byte [esp + 0x148]
test al, al
je 0x421a6b
lea ecx, [esp + 0x149]
nop
nop
nop
mov byte [ebx], al
inc ebx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x421a60
mov byte [ebx], 0
mov eax, dword [ebp + 0xc]
mov dword [eax], ebx
mov eax, dword [esp + 8]
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 8]
and cl, 1
mov dword [esp + 8], ecx
test eax, eax
je 0x4219ef
cmp eax, dword [esp + 0x50]
je 0x4219ef
push eax
call fcn.0040cbd0
add esp, 4
mov dword [esp + 0x4c], 0
jmp 0x4219ef