Function at 0x420520
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, 0x2e0
mov eax, dword [ebp + 0x10]
mov dword [esp + 0x54], 0
mov dword [esp + 0x50], 0
mov dword [esp + 0x40], 0
mov dword [esp + 0x140], 0xc7aea9bf
mov byte [esp + 0x144], 0xd8
mov word [esp + 0x145], 0
mov byte [esp + 0x147], 0
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov dl, 0x10
sub dl, cl
xor dl, byte [esp + ecx + 0x140]
xor dl, 0x5f
add dl, 0x75
mov byte [esp + ecx + 0x140], dl
mov edx, ecx
xor edx, 1
and ecx, 1
lea ecx, [edx + ecx*2]
cmp ecx, 8
jb 0x420580
mov ecx, dword [ebp + 0xc]
mov esi, dword [ecx]
movzx ecx, byte [esp + 0x140]
test cl, cl
je 0x4205cb
lea edx, [esp + 0x141]
mov byte [esi], cl
inc esi
movzx ecx, byte [edx]
inc edx
test cl, cl
jne 0x4205c0
mov byte [esi], 0
mov dword [esp + 0x3c], 0
mov dword [esp + 0x38], 0
mov dword [esp + 0x34], 0
mov dword [esp + 0x30], 0
lea ecx, [esp + 0x40]
lea edx, [esp + 0x50]
lea edi, [esp + 0x30]
xor ebx, ebx
push ecx
push edx
push edi
mov ecx, dword [ebp + 0x14]
push dword [ecx + 0x10]
push eax
push dword [ecx + 0xc]
call fcn.00422cf0
add esp, 0x18
test al, al
je 0x420b1d
mov dword [esp + 0x140], 0x6b3b0d0c
mov byte [esp + 0x144], 0x90
mov dword [esp + 0x145], 0
mov dword [esp + 0x148], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
xor ecx, 0x9a
mov edx, eax
or edx, 0x65
and ecx, edx
add ecx, edx
xor cl, byte [esp + eax + 0x140]
add cl, 7
mov byte [esp + eax + 0x140], cl
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
cmp eax, 0xc
jb 0x420650
movzx eax, byte [esp + 0x140]
test al, al
je 0x4206ab
lea ecx, [esp + 0x141]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [esi], al
inc esi
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x4206a0
mov byte [esi], 0
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x50]
mov edx, dword [esp + 0x54]
mov dword [esp + 0x134], edx
mov dword [esp + 0x130], ecx
mov dword [esp + 0x138], eax
mov dword [esp + 0x140], 0xaef8d5a9
mov dword [esp + 0x144], 0xccabf5ca
mov dword [esp + 0x148], 0xfa8c9ce2
mov dword [esp + 0x14c], 0x949b9a99
mov dword [esp + 0x150], 0x92c89bc1
mov dword [esp + 0x154], 0xc5dacfdd
mov dword [esp + 0x158], 0x888f8e8d
mov dword [esp + 0x15c], 0xedc283dc
mov dword [esp + 0x160], 0xd7fcc98b
mov dword [esp + 0x164], 0xfe8b8fd7
mov dword [esp + 0x168], 0xb6f68593
mov dword [esp + 0x16c], 0xe7b49490
mov dword [esp + 0x170], 0xbce6f496
mov dword [esp + 0x174], 0xe39ffffd
mov dword [esp + 0x178], 0xea90b1ef
mov dword [esp + 0x17c], 0xe4ebeae9
mov dword [esp + 0x180], 0xb685bbb1
mov dword [esp + 0x184], 0xdcef88e3
mov dword [esp + 0x188], 0xd8a183ac
mov dword [esp + 0x18c], 0xdbdbdad9
mov dword [esp + 0x190], 0xd0d7d6ad
mov dword [esp + 0x194], 0x83daa7d1
mov dword [esp + 0x198], 0xbec6b3c2
mov dword [esp + 0x19c], 0x9685c7b2
mov dword [esp + 0x1a0], 0xc0c7c6c5
mov dword [esp + 0x1a4], 0x5ed2ca95
mov dword [esp + 0x1a8], 0x633d6e3d
mov dword [esp + 0x1ac], 0x34375831
mov dword [esp + 0x1b0], 0x30373635
mov dword [esp + 0x1b4], 0x58333231
mov dword [esp + 0x1b8], 0x2a796221
mov dword [esp + 0x1bc], 0x242b2a29
mov dword [esp + 0x1c0], 0x7d4b4473
mov dword [esp + 0x1c4], 0x11762e21
mov byte [esp + 0x1c8], 0xdc
mov dword [esp + 0x1cc], 0
mov dword [esp + 0x1c9], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0x99
xor cl, byte [esp + eax + 0x140]
add cl, 3
mov byte [esp + eax + 0x140], cl
inc eax
cmp eax, 0x90
jne 0x420870
mov dword [esp + 0x58], 0xf4b2a2a6
mov dword [esp + 0x5c], 0x2cf19f5c
mov dword [esp + 0x60], 0x5930f4bc
mov dword [esp + 0x64], 0x7d7e7f40
mov dword [esp + 0x68], 0x41f67ac7
mov dword [esp + 0x6c], 0x6d79c080
mov dword [esp + 0x70], 0x71727374
mov dword [esp + 0x74], 0x957ed888
mov dword [esp + 0x78], 0x88b217d1
mov dword [esp + 0x7c], 0x11121a8a
mov dword [esp + 0x80], 0x15161710
mov dword [esp + 0x84], 0x696a6b14
mov dword [esp + 0x88], 0xa4e2f2f6
mov dword [esp + 0x8c], 0xa2eedf0c
mov dword [esp + 0x90], 0x2aa7eb66
mov dword [esp + 0x94], 0xd0e0f10
mov dword [esp + 0x98], 0xf16ac4f4
mov dword [esp + 0x9c], 0x5dafbbf
mov dword [esp + 0xa0], 0x185b0fc
mov dword [esp + 0xa4], 0xe53e3f00
mov dword [esp + 0xa8], 0x393a3b24
mov dword [esp + 0xac], 0xcf83cf38
mov dword [esp + 0xb0], 0xc387cb14
mov dword [esp + 0xb4], 0x879bd7e8
mov dword [esp + 0xb8], 0x292a2b2c
mov dword [esp + 0xbc], 0xf9da94dc
mov dword [esp + 0xc0], 0x1195d424
mov dword [esp + 0xc4], 0xdd64a6d8
mov dword [esp + 0xc8], 0xd9dadbdc
mov dword [esp + 0xcc], 0x2dd6d7d8
mov dword [esp + 0xd0], 0xfad3d563
mov dword [esp + 0xd4], 0xcdcecfd0
mov dword [esp + 0xd8], 0x153e7e34
mov dword [esp + 0xdc], 0xda093fc8
mov byte [esp + 0xe0], 0xc4
mov dword [esp + 0xe4], 0
mov dword [esp + 0xe1], 0
mov eax, 0x13
mov ecx, 0xec
nop
nop
movzx ebx, byte [esp + eax + 0x45]
mov edx, eax
xor edx, ecx
and edx, ebx
xor edx, ecx
mov bl, 0xa0
sub bl, dl
mov byte [esp + eax + 0x45], bl
inc eax
dec ecx
cmp eax, 0xa3
jne 0x420a10
lea eax, [esp + 0x140]
lea edx, [esp + 0x58]
lea ecx, [esp + 0x130]
push eax
push 0x88
push edx
push edi
call fcn.00442240
mov dword [esp + 0x12c], edx
mov dword [esp + 0x128], eax
xor ecx, ecx
or eax, edx
je 0x420b2a
mov dword [esp + 0x140], 0x6bcccbd8
mov byte [esp + 0x144], 0x70
mov word [esp + 0x145], 0
mov byte [esp + 0x147], 0
xor ebx, ebx
nop
nop
nop
nop
mov edi, ecx
xor ecx, 0x7bcea9ea
mov eax, edi
or eax, 5
and eax, ecx
mov ecx, eax
and ecx, 2
or eax, 2
imul eax, ecx
xor ecx, 2
mov edx, edi
and edx, 5
imul edx, ecx
mov ecx, edi
xor ecx, 0x84315615
add ecx, eax
add ecx, edx
movzx eax, byte [esp + edi + 0x140]
xor ecx, eax
mov eax, ecx
and eax, 0x16
xor ecx, 0x96
lea eax, [ecx + eax*2]
mov ecx, edi
inc al
mov byte [esp + edi + 0x140], al
inc ecx
cmp ecx, 8
jne 0x420a90
movzx eax, byte [esp + 0x140]
test al, al
je 0x420b31
lea ecx, [esp + 0x141]
lea edx, [esp + 0x30]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [esi], al
inc esi
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x420b10
jmp 0x420b35
mov dword [esp + 0xc], 0
jmp 0x42170e
xor ebx, ebx
jmp 0x42170a
lea edx, [esp + 0x30]
mov byte [esi], 0
lea eax, [esp + 0x128]
lea ecx, [esp + 0x130]
push 0
push 8
push eax
push edx
call fcn.00442240
mov dword [esp + 0x124], edx
mov dword [esp + 0x120], eax
xor ecx, ecx
or eax, edx
je 0x42170a
mov dword [esp + 0x140], 0x89242432
mov byte [esp + 0x144], 0x84
mov word [esp + 0x145], 0
mov byte [esp + 0x147], 0
nop
nop
mov eax, ecx
add al, 0x60
xor al, byte [esp + ecx + 0x140]
add al, 0x20
mov byte [esp + ecx + 0x140], al
inc ecx
cmp ecx, 8
jne 0x420b90
movzx eax, byte [esp + 0x140]
test al, al
je 0x420bcb
lea ecx, [esp + 0x141]
nop
nop
nop
mov byte [esi], al
inc esi
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x420bc0
mov byte [esi], 0
lea eax, [esp + 0x120]
lea edx, [esp + 0x44]
lea ecx, [esp + 0x30]
push 0
push 8
push eax
push edx
call fcn.004417e0
mov eax, dword [esp + 0x44]
cmp eax, dword [esp + 0x48]
je 0x4216e0
mov dword [esp + 0x140], 0x89e6e5f1
mov byte [esp + 0x144], 0xac
mov dword [esp + 0x145], 0
mov byte [esp + 0x149], 0
mov eax, 0xb8b2431c
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 0x474dbe24]
mov edx, ecx
and edx, eax
add dl, dl
sub cl, dl
movzx ecx, cl
add ecx, eax
add cl, 0x74
mov byte [esp + eax + 0x474dbe24], cl
inc eax
cmp eax, 0xb8b24326
jne 0x420c30
movzx eax, byte [esp + 0x140]
test al, al
je 0x420c7b
lea ecx, [esp + 0x141]
nop
nop
nop
nop
nop
nop
mov byte [esi], al
inc esi
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x420c70
mov byte [esi], 0
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x108], ecx
cmp eax, ecx
je 0x4216e0
xor ecx, ecx
lea edi, [esp + 0x30]
jmp 0x420ce9
mov dword [esp + 4], 0
push dword [esp + 0x2c]
call fcn.00404c50
add esp, 4
movzx eax, byte [esp + 4]
mov ecx, dword [esp + 0xc]
and cl, 1
movzx ecx, cl
mov edx, eax
not edx
and edx, ecx
xor eax, ecx
add eax, ecx
cmp eax, edx
setne cl
mov eax, dword [esp + 0x10c]
add eax, 8
cmp eax, dword [esp + 0x108]
je 0x4216e4
mov dword [esp + 0xc], ecx
mov ecx, dword [eax]
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x10c], eax
mov eax, dword [eax + 4]
mov dword [esp + 8], eax
push 0x198
push 0
lea eax, [esp + 0x148]
push eax
call fcn.0040cbe0
add esp, 0xc
xor eax, eax
jmp 0x420d32
lea edi, [esp + 0x30]
mov eax, dword [esp + 4]
inc eax
cmp eax, 0xb
je 0x420ef0
mov dword [esp + 4], eax
mov ecx, edi
push 0
push 0
push 0x198
lea eax, [esp + 0x14c]
push eax
push dword [esp + 0x18]
push dword [esp + 0x40]
call fcn.00441650
test eax, eax
js 0x420d24
movzx eax, byte [esp + 0x210]
movzx ecx, byte [esp + 0x211]
or al, 0x30
mov byte [esp + 0xe8], al
or cl, 0x30
mov byte [esp + 0xe9], cl
movzx ecx, byte [esp + 0x212]
or cl, 0x30
mov byte [esp + 0xea], cl
movzx ecx, byte [esp + 0x2d0]
or cl, 0x30
mov byte [esp + 0xeb], cl
mov word [esp + 0xec], 0xa
xor ecx, ecx
nop
nop
nop
mov byte [esi + ecx], al
movzx eax, byte [esp + ecx + 0xe9]
inc ecx
test al, al
jne 0x420db0
mov byte [esi + ecx], 0
cmp byte [esp + 0x212], 0
jne 0x420f10
add esi, ecx
mov dword [esp + 0x58], 0xc9ab90bf
mov byte [esp + 0x5c], 0x2c
lea eax, [esp + 0x5d]
mov dword [eax + 3], 0
mov dword [eax], 0
mov eax, 0x3491844c
mov ebx, 0xcb6e7bb3
nop
nop
nop
nop
movzx edi, byte [esp + eax - 0x349183f4]
mov edx, eax
and edx, edi
add edx, edx
mov ecx, ebx
sub ecx, edi
add edi, eax
and ecx, edx
not edx
and edx, edi
sub edx, ecx
add dl, 0x84
mov byte [esp + eax - 0x349183f4], dl
inc eax
dec ebx
cmp eax, 0x34918458
jne 0x420e00
movzx eax, byte [esp + 0x58]
test al, al
je 0x420e50
lea ecx, [esp + 0x59]
xor ebx, ebx
nop
nop
mov byte [esi], al
inc esi
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x420e40
jmp 0x420e52
xor ebx, ebx
mov byte [esi], 0
mov dword [esp + 0x14], 0xffffffff
mov dword [esp + 0x10], 0xff676980
mov dword [esp + 0x58], 0x101f1e1d
lea eax, [esp + 0x5d]
mov byte [eax + 1], 0
mov word [eax - 1], 0
xor eax, eax
nop
nop
nop
mov ecx, eax
add cl, 0x45
xor cl, byte [esp + eax + 0x58]
add cl, 0xa7
mov byte [esp + eax + 0x58], cl
inc eax
cmp eax, 7
jne 0x420e80
mov eax, dword [0x452e1c]
test eax, eax
je 0x420d20
mov ecx, dword [esp + 0x58]
xor edx, edx
mov edi, dword [0x452e20]
nop
cmp dword [edi + edx*8], 0xf8fd61b8
je 0x420ec3
inc edx
cmp eax, edx
jne 0x420eb0
jmp 0x420d20
mov eax, dword [edi + edx*8 + 4]
cmp eax, ecx
je 0x420d20
lea ecx, [esp + 0x10]
push ecx
push 0
push 2
push dword [0x452e24]
push eax
call fcn.00443a10
add esp, 0x14
jmp 0x420d20
cmp byte [esp + 0x212], 0
jne 0x420f12
mov ecx, dword [esp + 0xc]
jmp 0x420cd2
add esi, ecx
call fcn.00404e10
mov dword [esp + 0x2c], eax
push eax
call fcn.004047d0
add esp, 4
mov dword [esp + 8], eax
mov dword [esp + 0x58], 0x99474379
mov byte [esp + 0x5c], 0xe4
lea eax, [esp + 0x5d]
mov dword [eax + 3], 0
mov dword [eax], 0
mov eax, 0x58
mov edi, 0xa7
movzx ebx, byte [esp + eax]
mov ecx, edi
or ecx, ebx
mov edx, ecx
sub edx, ebx
add edx, eax
and edx, ecx
mov cl, 0x47
sub cl, dl
mov byte [esp + eax], cl
inc eax
dec edi
cmp eax, 0x64
jne 0x420f50
movzx eax, byte [esp + 0x58]
test al, al
je 0x420f90
lea edx, [esp + 0x59]
lea ecx, [esp + 0x30]
nop
mov byte [esi], al
inc esi
movzx eax, byte [edx]
inc edx
test al, al
jne 0x420f80
jmp 0x420f94
lea ecx, [esp + 0x30]
mov byte [esi], 0
mov eax, dword [esp + 0x178]
mov edx, dword [esp + 0x17c]
mov edi, eax
or edi, edx
mov dword [esp + 4], esi
je 0x420fe0
push 0
push 0
push 0x40
mov ebx, ecx
lea edi, [esp + 0x64]
push edi
push edx
push eax
call fcn.00441650
test eax, eax
js 0x420fe0
mov ecx, ebx
mov edx, edi
push dword [esp + 8]
call fcn.004234f0
add esp, 4
jmp 0x420fe2
xor eax, eax
mov dword [esp + 0x58], 0xe1444441
mov byte [esp + 0x5c], 0xf4
mov dword [esp + 0x5d], 0
mov ecx, 0x79adc56
mov esi, 0x186523a9
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + ecx - 0x79adbfe]
mov edx, esi
and edx, 0x182022b0
mov ebx, ecx
and ebx, 0x608dc0f
or ebx, edx
xor ebx, edi
xor ebx, 0x59b222f0
mov edx, 0x12
sub edx, ebx
add ebx, 0x6d
and edx, 0x9b
and ebx, 0x64
sub ebx, edx
mov byte [esp + ecx - 0x79adbfe], bl
inc ecx
dec esi
cmp ecx, 0x79adc5f
jne 0x421010
movzx ecx, byte [esp + 0x58]
test cl, cl
mov esi, dword [esp + 4]
je 0x421080
lea edx, [esp + 0x59]
xor ebx, ebx
lea edi, [esp + 0x30]
nop
mov byte [esi], cl
inc esi
movzx ecx, byte [edx]
inc edx
test cl, cl
jne 0x421070
jmp 0x421086
xor ebx, ebx
lea edi, [esp + 0x30]
mov byte [esi], 0
test al, al
je 0x420ca0
push dword [esp + 8]
call fcn.00404c10
add esp, 4
test eax, eax
je 0x42121e
mov eax, dword [esp + 0x298]
mov edx, dword [esp + 0x29c]
add eax, 0x28
adc edx, 0
mov ecx, edi
push 0
push 0
push 8
lea ebx, [esp + 0x124]
push ebx
push edx
push eax
call fcn.00441650
test eax, eax
mov dword [esp + 4], esi
js 0x421370
mov eax, dword [esp + 0x118]
mov edx, dword [esp + 0x11c]
add eax, 0x10
adc edx, 0
mov ecx, edi
push 0
push 0
push 8
lea esi, [esp + 0x11c]
push esi
push edx
push eax
call fcn.00441650
test eax, eax
js 0x421370
mov eax, dword [esp + 0x110]
mov edx, dword [esp + 0x114]
add eax, 0x10
adc edx, 0
mov ecx, edi
push 0
push 0
push 0x18
lea esi, [esp + 0xf4]
push esi
push edx
push eax
call fcn.00441650
test eax, eax
js 0x421370
cmp byte [esp + 0xff], 0
lea ebx, [esp + 0xe8]
js 0x421229
mov dword [esp + 0x10], 0xc15bc7bb
mov dword [esp + 0x14], 0xcd50c3af
mov dword [esp + 0x18], 0xc982cfec
mov dword [esp + 0x1c], 0xf556cbab
mov dword [esp + 0x20], 0xf192f797
mov word [esp + 0x24], 0xf3f0
lea eax, [esp + 0x26]
mov byte [eax + 4], 0
mov dword [eax], 0
mov eax, 0x44106551
mov ecx, 0xae
nop
nop
movzx edx, byte [esp + eax - 0x44106541]
mov esi, ecx
xor esi, eax
and esi, edx
xor esi, eax
mov edx, esi
and edx, 1
xor esi, 1
lea edx, [esi + edx*2]
add dl, 0x6a
mov byte [esp + eax - 0x44106541], dl
inc eax
dec ecx
cmp eax, 0x4410656c
jne 0x4211a0
movzx edi, word [esp + 0x10]
test di, di
mov dword [esp + 8], ebx
je 0x42125b
lea eax, [esp + 0x10]
mov ecx, ebx
mov esi, ebx
jmp 0x4211f8
movzx edi, word [eax]
test di, di
je 0x42125f
movzx ebx, word [ecx]
test bx, bx
je 0x421293
add ecx, 2
add eax, 2
lea edx, [esi + 2]
cmp bx, di
je 0x421216
mov esi, edx
mov ecx, edx
je 0x4211f0
lea eax, [esp + 0x10]
jmp 0x4211f0
mov al, 1
mov dword [esp + 4], eax
jmp 0x420ca8
mov esi, dword [esp + 0xe8]
mov edi, dword [esp + 0xec]
mov eax, esi
or eax, edi
je 0x421370
mov eax, dword [esp + 0xf0]
mov ebx, eax
inc ebx
jns 0x42132a
mov eax, 0xffffffff
jmp 0x421331
mov esi, ebx
jmp 0x421267
lea ebx, [esp + 0x58]
test esi, esi
je 0x421297
movzx edx, word [esi + 0x14]
lea ebx, [esp + 0x58]
test dx, dx
je 0x421297
lea eax, [esi + 0x14]
xor edi, edi
nop
nop
nop
nop
nop
nop
nop
cmp dx, 0x5c
je 0x4212c2
movzx edx, word [esi + edi + 0x16]
add edi, 2
test dx, dx
jne 0x421280
lea ebx, [esp + 0x58]
cmp byte [esp + 0xff], 0
jns 0x4212ad
push dword [esp + 8]
call fcn.0040cb70
add esp, 4
lea eax, [esp + 0x58]
cmp eax, ebx
mov esi, dword [esp + 4]
jne 0x42143a
jmp 0x421370
mov edx, esi
lea ecx, [esi + edi]
add ecx, 0x14
add edx, edi
mov esi, 0xffffffeb
sub esi, edx
and esi, eax
mov edx, eax
not edx
and edx, ecx
lea ebx, [esp + 0x58]
sub edx, esi
je 0x4216c8
sar edx, 1
mov ecx, edx
and ecx, 3
je 0x42166a
mov dword [esp + 0x104], edx
xor edi, edi
lea ebx, [esp + 0x58]
movzx esi, word [eax]
xor edx, edx
test si, si
setne dl
lea eax, [eax + edx*2]
mov word [ebx], si
add ebx, 2
inc edi
cmp ecx, edi
jne 0x421301
mov edx, dword [esp + 0x104]
mov esi, edx
sub esi, edi
jmp 0x421670
lea eax, [eax*2 + 2]
push eax
call fcn.0040cb60
add esp, 4
mov edx, ebx
and edx, 0xfffffffd
mov ecx, ebx
and ecx, 2
or ebx, 2
imul ebx, ecx
xor ecx, 2
imul ecx, edx
add ebx, ecx
lea ecx, [esp + 0x30]
push 0
push 0
push ebx
mov ebx, eax
push eax
push edi
push esi
call fcn.00441650
test eax, eax
jns 0x421157
nop
nop
nop
mov dword [esp + 0x10], 0x79e87bbb
mov dword [esp + 0x14], 0x7def7fdd
mov dword [esp + 0x18], 0x71e073e5
mov dword [esp + 0x1c], 0x75e277ef
mov dword [esp + 0x20], 0x696a6be5
xor eax, eax
mov ecx, 0x45d9d3bf
nop
movzx edx, byte [esp + ecx - 0x45d9d3af]
mov esi, eax
and esi, 0x21
mov edi, ecx
and edi, 0xde
or edi, esi
xor edi, 0xde
lea ebx, [eax + 0x40]
or ebx, edi
lea edi, [eax - 0x45d9d3c0]
or edi, edx
and ebx, edx
lea edx, [ebx + ebx]
not edx
add edx, ebx
and ebx, 0xffffffb2
and edx, 0xc781344d
or edx, ebx
not edi
xor edx, 0xc781344d
or edx, edi
mov esi, edx
and esi, 0x44
xor edx, 0x44
lea edx, [edx + esi*2]
inc dl
mov byte [esp + ecx - 0x45d9d3af], dl
dec eax
inc ecx
cmp eax, 0xffffffec
jne 0x4213a0
movzx eax, word [esp + 0x10]
lea edx, [esp + 0x58]
mov ebx, edx
test ax, ax
je 0x421431
lea ecx, [esp + 0x12]
mov ebx, edx
nop
nop
nop
nop
nop
nop
nop
mov word [ebx], ax
add ebx, 2
movzx eax, word [ecx]
add ecx, 2
test ax, ax
jne 0x421420
mov word [ebx], 0
mov esi, dword [esp + 4]
mov edx, ebx
lea eax, [esp + 0x58]
sub edx, eax
mov ecx, edx
shr ecx, 2
mov edi, esi
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
mov eax, edx
and eax, 0xfffffffc
lea edi, [esi + eax]
add eax, esp
add eax, 0x58
mov ecx, edx
shr ecx, 1
and ecx, 1
mov esi, eax
mov dword [esp + 8], edi
xchg esi, esi
rep movsw word es:[edi], word [esi]
xchg esi, esi
test bl, 1
je 0x421483
mov ecx, edx
and ecx, 2
movzx eax, byte [eax + ecx]
mov esi, dword [esp + 8]
mov byte [esi + ecx], al
mov dword [esp + 0x10], 0xf7e3e50a
mov word [esp + 0x14], 0x50e
mov dword [esp + 0x16], 0
xor eax, eax
nop
nop
nop
nop
mov ecx, eax
add cl, 0x40
xor cl, byte [esp + eax + 0x10]
add cl, 0xc0
mov byte [esp + eax + 0x10], cl
inc eax
cmp eax, 0xa
jne 0x4214a0
mov esi, dword [esp + 4]
add esi, edx
movzx eax, byte [esp + 0x10]
test al, al
je 0x4214db
lea ecx, [esp + 0x11]
nop
nop
nop
nop
nop
nop
nop
mov byte [esi], al
inc esi
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x4214d0
mov byte [esi], 0
mov eax, dword [ebp + 0x14]
mov ebx, dword [eax]
mov eax, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [ebx + eax + 2], 0
lea eax, [eax + 2]
jne 0x4214f0
sar eax, 1
sar edx, 1
lea ecx, [edx + eax]
add ecx, 0xa
test ecx, ecx
jns 0x421510
mov eax, 0xffffffff
jmp 0x421519
add edx, eax
lea eax, [edx*2 + 0x14]
push eax
call fcn.0040cb60
add esp, 4
movzx ecx, word [ebx]
mov edi, eax
test cx, cx
je 0x421551
add ebx, 2
mov edi, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [edi], cx
add edi, 2
movzx ecx, word [ebx]
add ebx, 2
test cx, cx
jne 0x421540
mov dword [esp + 8], eax
mov word [edi], 0x2f
mov dword [esp + 0x10], 0x29582b75
mov dword [esp + 0x14], 0x2db72f43
mov dword [esp + 0x18], 0x51c6537e
mov dword [esp + 0x1c], 0x55c257c8
mov word [esp + 0x20], 0x5b54
lea ecx, [esp + 0x26]
mov byte [ecx - 2], 0
mov word [ecx - 4], 0
mov ecx, 0x37
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + ecx - 0x27]
mov ebx, edx
and ebx, ecx
add bl, bl
sub dl, bl
movzx edx, dl
add edx, ecx
add dl, 0xed
mov byte [esp + ecx - 0x27], dl
inc ecx
cmp ecx, 0x4c
jne 0x4215a0
add edi, 2
movzx ecx, word [esp + 0x58]
test cx, cx
je 0x4215e1
lea edx, [esp + 0x5a]
mov word [edi], cx
add edi, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x4215d0
mov word [edi], 0
movzx ecx, word [esp + 0x10]
test cx, cx
je 0x421611
lea edx, [esp + 0x12]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [edi], cx
add edi, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x421600
mov word [edi], 0
mov ebx, 0xffffffff
push dword [esp + 0x2c]
call fcn.00405a50
add esp, 4
mov edi, eax
nop
nop
nop
nop
nop
nop
nop
cmp byte [edi + ebx + 1], 0
lea ebx, [ebx + 1]
jne 0x421630
mov ecx, dword [ebp + 8]
push ebx
push edi
mov ebx, dword [esp + 0x10]
push ebx
call fcn.0040d560
mov dword [esp + 4], eax
push edi
call fcn.00405ae0
add esp, 4
push ebx
call fcn.0040cb70
add esp, 4
xor ebx, ebx
lea edi, [esp + 0x30]
jmp 0x420ca8
lea ebx, [esp + 0x58]
mov esi, edx
dec edx
cmp edx, 3
jb 0x4216c8
movzx edx, word [eax]
xor ecx, ecx
test dx, dx
setne cl
mov word [ebx], dx
lea edx, [eax + ecx*2]
movzx eax, word [eax + ecx*2]
xor ecx, ecx
test ax, ax
setne cl
mov word [ebx + 2], ax
lea eax, [edx + ecx*2]
movzx ecx, word [edx + ecx*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 esi, 0xfffffffc
jne 0x421676
mov word [ebx], 0
cmp byte [esp + 0xff], 0
jns 0x4212ad
jmp 0x4212a1
xor ecx, ecx
jmp 0x42170a
mov eax, dword [esp + 0x44]
and cl, 1
test eax, eax
je 0x42170a
cmp eax, dword [esp + 0x48]
je 0x42170a
push eax
mov edi, ecx
call fcn.0040cb70
mov ecx, edi
add esp, 4
mov dword [esp + 0x44], 0
mov dword [esp + 0xc], ecx
lea ecx, [esp + 0x30]
call fcn.00440e20
mov dword [esp + 0x140], 0x5bbab7ab
mov byte [esp + 0x144], 0x50
mov dword [esp + 0x145], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, ebx
and edx, 0x1a
mov ecx, eax
xor ecx, 0xd
add ecx, edx
xor cl, byte [esp + eax + 0x140]
add cl, 0xbf
mov byte [esp + eax + 0x140], cl
inc eax
add ebx, 2
cmp eax, 9
jne 0x421740
movzx eax, byte [esp + 0x140]
test al, al
je 0x42178b
lea ecx, [esp + 0x141]
nop
nop
nop
nop
nop
nop
nop
mov byte [esi], al
inc esi
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x421780
mov byte [esi], 0
mov eax, dword [ebp + 0xc]
mov dword [eax], esi
mov eax, dword [esp + 0xc]
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret