Function at 0x420440
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 edi, 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 + 0x140], 0x2b8a81fb
mov byte [esp + 0x144], 0x10
mov word [esp + 0x145], 0
mov byte [esp + 0x147], 0
xor ecx, ecx
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov esi, ecx
and esi, 0xa
mov ebx, edx
xor ebx, 0x45
add ebx, esi
xor bl, byte [esp + edx + 0x140]
add bl, 0xa7
mov byte [esp + edx + 0x140], bl
inc edx
add ecx, 2
cmp edx, 8
jne 0x4204a0
mov ecx, dword [ebp + 0xc]
mov esi, dword [ecx]
movzx ecx, byte [esp + 0x140]
test cl, cl
je 0x4204eb
lea edx, [esp + 0x141]
nop
nop
mov byte [esi], cl
inc esi
movzx ecx, byte [edx]
inc edx
test cl, cl
jne 0x4204e0
mov byte [esi], 0
mov dword [esp + 0x44], 0
mov dword [esp + 0x40], 0
mov dword [esp + 0x3c], 0
mov dword [esp + 0x38], 0
lea ecx, [esp + 0x48]
lea edx, [esp + 0x58]
lea ebx, [esp + 0x38]
push ecx
push edx
push ebx
push dword [edi + 0x10]
push eax
push dword [edi + 0xc]
call fcn.00422b50
add esp, 0x18
test al, al
je 0x421592
mov dword [esp + 0x140], 0x11697f78
mov byte [esp + 0x144], 0xc
mov dword [esp + 0x145], 0
mov word [esp + 0x149], 0
xor eax, eax
nop
nop
mov ecx, eax
add cl, 0x82
xor cl, byte [esp + eax + 0x140]
add cl, 0x76
mov byte [esp + eax + 0x140], cl
inc eax
cmp eax, 0xb
jne 0x420560
movzx eax, byte [esp + 0x140]
test al, al
je 0x42059b
lea ecx, [esp + 0x141]
nop
mov byte [esi], al
inc esi
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x420590
mov byte [esi], 0
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x58]
mov edx, dword [esp + 0x5c]
mov dword [esp + 0x134], edx
mov dword [esp + 0x130], ecx
mov dword [esp + 0x138], eax
mov dword [esp + 0x140], 0x26681d39
mov dword [esp + 0x144], 0x642b7d0a
mov dword [esp + 0x148], 0x7a241412
mov dword [esp + 0x14c], 0x1c1b1a19
mov dword [esp + 0x150], 0x62782b71
mov dword [esp + 0x154], 0x1d1a0715
mov dword [esp + 0x158], 0x68676665
mov dword [esp + 0x15c], 0x75125304
mov dword [esp + 0x160], 0x1f64195b
mov dword [esp + 0x164], 0x764b471f
mov dword [esp + 0x168], 0xe4e7d63
mov dword [esp + 0x16c], 0x4f0c6c60
mov dword [esp + 0x170], 0x344e7c1e
mov dword [esp + 0x174], 0x73577775
mov dword [esp + 0x178], 0x4a402147
mov dword [esp + 0x17c], 0x4c4b4a49
mov dword [esp + 0x180], 0x3e2d2b21
mov dword [esp + 0x184], 0x54674853
mov dword [esp + 0x188], 0x58513344
mov dword [esp + 0x18c], 0x6b5b5a59
mov dword [esp + 0x190], 0xa05f5e55
mov dword [esp + 0x194], 0xd39aafa1
mov dword [esp + 0x198], 0xa69ea392
mov dword [esp + 0x19c], 0xdedd9fa2
mov dword [esp + 0x1a0], 0xb0afaead
mov dword [esp + 0x1a4], 0xd6828add
mov dword [esp + 0x1a8], 0xd3b5c6b5
mov dword [esp + 0x1ac], 0xbc8fd881
mov dword [esp + 0x1b0], 0x80bfbebd
mov dword [esp + 0x1b4], 0x88838281
mov dword [esp + 0x1b8], 0x8ae9f2b1
mov dword [esp + 0x1bc], 0x8c8b8a89
mov dword [esp + 0x1c0], 0xf59bece3
mov dword [esp + 0x1c4], 0xa1fea691
mov byte [esp + 0x1c8], 0x54
mov byte [esp + 0x1cd], 0
mov dword [esp + 0x1c9], 0
mov edx, 0x9236472d
mov edi, 0x6dc9b8d2
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esp + edx + 0x6dc9ba13]
mov dword [esp + 4], ebx
xor ebx, edx
or ebx, edi
mov eax, ebx
or al, 2
inc al
mov ecx, ebx
shr cl, 1
and cl, 1
mul cl
mov ecx, eax
add cl, al
add cl, byte [esp + 4]
test bl, 2
sete al
not bl
or bl, 2
mul bl
add al, al
sub cl, al
movzx eax, cl
add eax, edx
add al, 0x1f
mov byte [esp + edx + 0x6dc9ba13], al
inc edx
dec edi
cmp edx, 0x923647bb
jne 0x420760
mov dword [esp + 0x78], 0xf4320206
mov dword [esp + 0x7c], 0x9cd14f6c
mov dword [esp + 0x80], 0x8990d42c
mov dword [esp + 0x84], 0x6d6e6f60
mov dword [esp + 0x88], 0x61f66ae7
mov dword [esp + 0x8c], 0x7d892020
mov dword [esp + 0x90], 0x91929394
mov dword [esp + 0x94], 0xd58e28d8
mov dword [esp + 0x98], 0xf8b25711
mov dword [esp + 0x9c], 0x71724afa
mov dword [esp + 0xa0], 0x75767770
mov dword [esp + 0xa4], 0x797a7b74
mov dword [esp + 0xa8], 0x4c2f2f6
mov dword [esp + 0xac], 0x2feef9c
mov dword [esp + 0xb0], 0xba07fb46
mov dword [esp + 0xb4], 0xbdbebfb0
mov dword [esp + 0xb8], 0xf15ae4f4
mov dword [esp + 0xbc], 0xa58aeb0f
mov dword [esp + 0xc0], 0xa12510ec
mov dword [esp + 0xc4], 0x85aeafa0
mov dword [esp + 0xc8], 0xa9aaab44
mov dword [esp + 0xcc], 0x9f639fa8
mov dword [esp + 0xd0], 0xa3679bf4
mov dword [esp + 0xd4], 0x676b97f8
mov dword [esp + 0xd8], 0xd9dadbdc
mov dword [esp + 0xdc], 0xe98a74ac
mov dword [esp + 0xe0], 0xf175b4c4
mov dword [esp + 0xe4], 0xcd440688
mov dword [esp + 0xe8], 0xc9cacbcc
mov dword [esp + 0xec], 0xbdf6f7c8
mov dword [esp + 0xf0], 0xcaf3f543
mov dword [esp + 0xf4], 0xfdfefff0
mov dword [esp + 0xf8], 0xd58e4eb4
mov dword [esp + 0xfc], 0xab9aff8
mov byte [esp + 0x100], 0xe4
mov dword [esp + 0x101], 0
mov eax, 0x9a69ef6b
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 0x6596110d]
xor ecx, eax
mov edx, ecx
and edx, 1
or ecx, 1
add ecx, edx
add cl, 0xe8
mov byte [esp + eax + 0x6596110d], cl
inc eax
cmp eax, 0x9a69eff8
jne 0x420940
lea eax, [esp + 0x140]
lea edx, [esp + 0x78]
lea ecx, [esp + 0x130]
push eax
push 0x88
push edx
lea edi, [esp + 0x44]
push edi
call fcn.00440f80
mov dword [esp + 0x12c], edx
mov dword [esp + 0x128], eax
or eax, edx
je 0x42159e
mov dword [esp + 0x140], 0x19b0b5c4
mov byte [esp + 0x144], 0x24
mov dword [esp + 0x145], 0
mov dword [esp + 0x148], 0
mov eax, 0xa108a9f8
nop
nop
nop
movzx ecx, byte [esp + eax + 0x5ef75748]
xor ecx, eax
lea edx, [ecx + 0x27]
not ecx
and ecx, 1
xor edx, 1
lea ecx, [edx + ecx*2]
mov byte [esp + eax + 0x5ef75748], cl
inc eax
cmp eax, 0xa108aa04
jne 0x4209d0
movzx eax, byte [esp + 0x140]
test al, al
je 0x420a1b
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 0x420a10
mov byte [esi], 0
lea eax, [esp + 0x128]
lea ecx, [esp + 0x130]
push 0
push 8
push eax
push edi
call fcn.00440f80
mov dword [esp + 0x124], edx
mov dword [esp + 0x120], eax
or eax, edx
je 0x42159e
mov dword [esp + 0x140], 0xdb68687e
mov byte [esp + 0x144], 0xd0
mov dword [esp + 0x145], 0
mov eax, 0x3497dfe8
mov ecx, 0x692fbfd0
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, ecx
and edx, 0x2005945a
mov edi, eax
xor edi, 0xd12aea2d
lea ebx, [edi + edx]
add edi, edx
add edi, 0xcb682018
movzx edx, byte [esp + eax - 0x3497dea8]
and edi, edx
add edx, ebx
add edx, 0xcb682018
add edi, edi
sub edx, edi
add dl, 0x1f
mov byte [esp + eax - 0x3497dea8], dl
inc eax
add ecx, 2
cmp eax, 0x3497dff1
jne 0x420a80
movzx eax, byte [esp + 0x140]
test al, al
je 0x420aeb
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 0x420ae0
mov byte [esi], 0
lea eax, [esp + 0x120]
lea edx, [esp + 0x4c]
lea ecx, [esp + 0x38]
push 0
push 8
push eax
push edx
call fcn.004404d0
mov eax, dword [esp + 0x4c]
cmp eax, dword [esp + 0x50]
je 0x42159e
mov dword [esp + 0x140], 0x5ba2a3af
mov byte [esp + 0x144], 0x50
mov dword [esp + 0x145], 0
mov byte [esp + 0x149], 0
mov eax, 0x389bf68d
mov ecx, 0x47640972
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + eax - 0x389bf54d]
mov ebx, ecx
and ebx, 0x43400068
mov edx, eax
and edx, 0x281a7097
or edx, ebx
xor edx, edi
mov edi, edx
xor edi, 0xaa
add edx, edx
and edx, 0x7a
xor edx, 0x50
sub edx, edi
inc dl
mov byte [esp + eax - 0x389bf54d], dl
inc eax
dec ecx
cmp eax, 0x389bf697
jne 0x420b50
movzx eax, byte [esp + 0x140]
test al, al
je 0x420bbb
lea ecx, [esp + 0x141]
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 0x420bb0
mov byte [esi], 0
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x50]
mov dword [esp + 0x108], ecx
cmp eax, ecx
je 0x42159e
mov dword [esp + 8], 0
lea edi, [esp + 0x38]
jmp 0x420c21
xor ebx, ebx
push dword [esp + 0x34]
call fcn.00404b10
add esp, 4
mov eax, dword [esp + 8]
and al, 1
or al, bl
mov dword [esp + 8], eax
mov eax, dword [esp + 0x10c]
add eax, 8
cmp eax, dword [esp + 0x108]
je 0x42167f
mov ecx, dword [eax]
mov dword [esp + 0xc], ecx
mov dword [esp + 0x10c], eax
mov eax, dword [eax + 4]
mov dword [esp + 0x30], eax
push 0x198
push 0
lea eax, [esp + 0x148]
push eax
call fcn.0040cb50
add esp, 0xc
xor ebx, ebx
jmp 0x420c62
mov esi, dword [esp + 4]
lea edi, [esp + 0x38]
inc ebx
cmp ebx, 0xb
je 0x420e40
mov ecx, edi
push 0
push 0
push 0x198
lea eax, [esp + 0x14c]
push eax
push dword [esp + 0x40]
push dword [esp + 0x20]
call fcn.00440340
test eax, eax
js 0x420c58
movzx eax, byte [esp + 0x210]
movzx ecx, byte [esp + 0x211]
or al, 0x30
mov byte [esp + 0x60], al
or cl, 0x30
mov byte [esp + 0x61], cl
movzx ecx, byte [esp + 0x212]
or cl, 0x30
mov byte [esp + 0x62], cl
movzx ecx, byte [esp + 0x2d0]
or cl, 0x30
mov byte [esp + 0x63], cl
mov word [esp + 0x64], 0xa
xor ecx, ecx
nop
nop
nop
nop
nop
nop
mov byte [esi + ecx], al
movzx eax, byte [esp + ecx + 0x61]
inc ecx
test al, al
jne 0x420cd0
mov byte [esi + ecx], 0
cmp byte [esp + 0x212], 0
jne 0x420e50
add esi, ecx
mov dword [esp + 0x78], 0xc9aba057
mov byte [esp + 0x7c], 0xc4
mov dword [esp + 0x7d], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0x50
xor cl, byte [esp + eax + 0x78]
add cl, 0x70
mov byte [esp + eax + 0x78], cl
inc eax
cmp eax, 9
jne 0x420d10
mov dword [esp + 0x34], ebx
movzx eax, byte [esp + 0x78]
test al, al
je 0x420d4b
lea ecx, [esp + 0x79]
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 0x420d40
mov dword [esp + 4], esi
mov byte [esi], 0
mov dword [esp + 0x14], 0xffffffff
mov dword [esp + 0x10], 0xff676980
mov dword [esp + 0x78], 0x34353637
lea eax, [esp + 0x7c]
mov byte [eax + 2], 0
mov word [eax], 0
mov eax, 0x3039a8f4
mov ecx, 0xcfc6570b
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + eax - 0x3039a87c]
lea edx, [eax - 0x3039a800]
and edx, edi
mov esi, edx
and esi, 2
mov ebx, edx
or edx, 2
imul edx, esi
xor esi, 2
and ebx, 0xfffffffd
imul ebx, esi
add edx, ebx
mov esi, ecx
sub esi, edi
add edi, eax
and esi, edx
not edx
and edx, edi
sub edx, esi
add dl, 0x3c
mov byte [esp + eax - 0x3039a87c], dl
inc eax
dec ecx
cmp eax, 0x3039a8fb
jne 0x420d90
mov eax, dword [0x451f60]
test eax, eax
mov ebx, dword [esp + 0x34]
je 0x420c50
mov ecx, dword [esp + 0x78]
xor edx, edx
mov edi, dword [0x451f64]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [edi + edx*8], 0xf8fd61b8
je 0x420e13
inc edx
cmp eax, edx
jne 0x420e00
jmp 0x420c50
mov eax, dword [edi + edx*8 + 4]
cmp eax, ecx
je 0x420c50
lea ecx, [esp + 0x10]
push ecx
push 0
push 2
push dword [0x451f68]
push eax
call fcn.004426c0
add esp, 0x14
jmp 0x420c50
cmp byte [esp + 0x212], 0
jne 0x420e52
jmp 0x420c0a
add esi, ecx
call fcn.00404cd0
mov dword [esp + 0x34], eax
push eax
call fcn.00404690
add esp, 4
mov dword [esp + 4], eax
mov dword [esp + 0x78], 0xeb595d47
mov byte [esp + 0x7c], 0xf0
lea eax, [esp + 0x7c]
mov byte [eax + 5], 0
mov dword [eax + 1], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0x55
xor cl, byte [esp + eax + 0x78]
add cl, 0x57
mov byte [esp + eax + 0x78], cl
inc eax
cmp eax, 0xa
jne 0x420e90
movzx eax, byte [esp + 0x78]
test al, al
je 0x420ecb
lea ecx, [esp + 0x79]
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 0x420ec0
mov byte [esi], 0
mov eax, dword [esp + 0x178]
mov edx, dword [esp + 0x17c]
xor ebx, ebx
mov ecx, eax
or ecx, edx
je 0x420f20
mov ecx, edi
push 0
push 0
push 0x40
lea edi, [esp + 0x84]
push edi
push edx
push eax
call fcn.00440340
test eax, eax
js 0x420f24
lea ecx, [esp + 0x38]
mov edx, edi
push dword [esp + 4]
call fcn.004234d0
add esp, 4
jmp 0x420f26
xor eax, eax
jmp 0x420f2a
xor eax, eax
lea edi, [esp + 0x38]
mov dword [esp + 0x78], 0x8124e4e1
mov byte [esp + 0x7c], 0xb4
lea ecx, [esp + 0x7c]
mov word [ecx + 5], 0
mov dword [ecx + 1], 0
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, ebx
add cl, 0x1e
xor cl, byte [esp + ebx + 0x78]
add cl, 0x6a
mov byte [esp + ebx + 0x78], cl
inc ebx
cmp ebx, 0xb
jne 0x420f50
movzx ecx, byte [esp + 0x78]
test cl, cl
je 0x420f8b
lea edx, [esp + 0x79]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [esi], cl
inc esi
movzx ecx, byte [edx]
inc edx
test cl, cl
jne 0x420f80
mov byte [esi], 0
test al, al
je 0x420bf0
push dword [esp + 4]
call fcn.00404ad0
add esp, 4
test eax, eax
je 0x42111e
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.00440340
test eax, eax
mov dword [esp + 4], esi
mov esi, edi
lea edi, [esp + 0x78]
js 0x4211d0
mov eax, dword [esp + 0x118]
mov edx, dword [esp + 0x11c]
add eax, 0x10
adc edx, 0
mov ecx, esi
push 0
push 0
push 8
lea ebx, [esp + 0x11c]
push ebx
push edx
push eax
call fcn.00440340
test eax, eax
js 0x4211d0
mov eax, dword [esp + 0x110]
mov edx, dword [esp + 0x114]
add eax, 0x10
adc edx, 0
mov ecx, esi
push 0
push 0
push 0x18
lea esi, [esp + 0x6c]
push esi
push edx
push eax
call fcn.00440340
test eax, eax
js 0x42116c
cmp byte [esp + 0x77], 0
lea edi, [esp + 0x60]
js 0x421125
mov dword [esp + 0x10], 0x41db47bb
mov dword [esp + 0x14], 0x4dd043af
mov dword [esp + 0x18], 0x49824f6c
mov dword [esp + 0x1c], 0x75d64bab
mov dword [esp + 0x20], 0x71927797
mov word [esp + 0x24], 0x7370
lea eax, [esp + 0x26]
mov byte [eax + 2], 0
mov word [eax], 0
mov eax, 0xbd55920e
mov ecx, 0x7aab241c
nop
mov esi, eax
xor esi, 0x7d
mov edx, ecx
and edx, 4
sub edx, esi
xor dl, byte [esp + eax + 0x42aa6e02]
add dl, 0x2b
mov byte [esp + eax + 0x42aa6e02], dl
inc eax
add ecx, 2
cmp eax, 0xbd559227
jne 0x4210a0
movzx ebx, word [esp + 0x10]
test bx, bx
mov dword [esp + 0x30], edi
je 0x421172
lea eax, [esp + 0x10]
mov edx, edi
mov esi, edi
jmp 0x4210f8
movzx ebx, word [eax]
test bx, bx
je 0x421176
movzx edi, word [edx]
test di, di
je 0x4211a7
add edx, 2
add eax, 2
lea ecx, [esi + 2]
cmp di, bx
je 0x421116
mov esi, ecx
mov edx, ecx
je 0x4210f0
lea eax, [esp + 0x10]
jmp 0x4210f0
mov bl, 1
jmp 0x420bf2
mov ebx, dword [esp + 0x60]
mov edi, dword [esp + 0x64]
mov eax, ebx
or eax, edi
je 0x42116c
mov eax, dword [esp + 0x68]
lea esi, [eax*2 + 2]
inc eax
mov eax, esi
jns 0x421148
mov eax, 0xffffffff
push eax
call fcn.0040cad0
add esp, 4
lea ecx, [esp + 0x38]
push 0
push 0
push esi
push eax
push edi
mov edi, eax
push ebx
call fcn.00440340
test eax, eax
jns 0x421059
lea edi, [esp + 0x78]
jmp 0x4211d0
mov esi, edi
jmp 0x42117e
lea ebx, [esp + 0x78]
test esi, esi
je 0x4211ab
movzx edi, word [esi + 0x14]
lea ebx, [esp + 0x78]
test di, di
je 0x4211ab
lea eax, [esi + 0x14]
xor ecx, ecx
cmp di, 0x5c
je 0x4214dc
movzx edi, word [esi + ecx + 0x16]
add ecx, 2
test di, di
jne 0x421190
lea ebx, [esp + 0x78]
cmp byte [esp + 0x77], 0
jns 0x4211be
push dword [esp + 0x30]
call fcn.0040cae0
add esp, 4
lea edi, [esp + 0x78]
cmp edi, ebx
mov esi, dword [esp + 4]
jne 0x42126a
nop
nop
mov dword [esp + 0x10], 0xf744f9a1
mov dword [esp + 0x14], 0xf341f54b
mov dword [esp + 0x18], 0xcf7cf14b
mov dword [esp + 0x1c], 0xcb46cd75
mov dword [esp + 0x20], 0xc7c6c97b
mov dword [esp + 0x24], 0
xor eax, eax
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov esi, eax
and esi, 0x2c
mov edx, ecx
xor edx, 0xd6
add edx, esi
xor dl, byte [esp + ecx + 0x10]
add dl, 0xd2
mov byte [esp + ecx + 0x10], dl
inc ecx
add eax, 2
cmp ecx, 0x18
jne 0x421210
movzx eax, word [esp + 0x10]
mov ebx, edi
test ax, ax
je 0x421261
lea ecx, [esp + 0x12]
mov ebx, edi
nop
nop
nop
nop
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 0x421250
mov word [ebx], 0
mov esi, dword [esp + 4]
mov edx, ebx
sub edx, edi
mov ecx, edx
shr ecx, 2
mov eax, edi
mov edi, esi
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
mov eax, edx
and eax, 0xfffffffc
add esi, eax
lea eax, [esp + eax + 0x78]
mov dword [esp + 0xc], edx
mov ecx, edx
mov edx, esi
shr ecx, 1
and ecx, 1
mov esi, eax
mov edi, edx
xchg esi, esi
rep movsw word es:[edi], word [esi]
xchg esi, esi
test bl, 1
je 0x4212b1
mov ecx, dword [esp + 0xc]
and ecx, 2
movzx eax, byte [eax + ecx]
mov byte [edx + ecx], al
mov dword [esp + 0x10], 0xadbdbfda
mov word [esp + 0x14], 0xdfc6
mov dword [esp + 0x16], 0
mov eax, 0x4f
xor ecx, ecx
nop
movzx edi, byte [esp + eax - 0x3f]
lea ebx, [edi + edi]
not ebx
add ebx, edi
and ebx, 0x72
mov esi, edi
xor esi, 0x72
or edi, 0x8d
and edi, esi
or edi, ebx
mov esi, eax
and esi, 0x52
mov ebx, ecx
and ebx, 0xd
or ebx, esi
xor ebx, edi
mov dl, 0xf4
sub dl, bl
mov byte [esp + eax - 0x3f], dl
inc eax
dec ecx
cmp eax, 0x59
jne 0x4212d0
mov edx, dword [esp + 4]
mov ebx, dword [esp + 0xc]
add edx, ebx
movzx eax, byte [esp + 0x10]
test al, al
je 0x42133d
lea ecx, [esp + 0x11]
mov esi, dword [ebp + 0x14]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], al
inc edx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x421330
jmp 0x421340
mov esi, dword [ebp + 0x14]
mov byte [edx], 0
mov edi, dword [esi]
mov eax, 0xfffffffe
nop
nop
nop
nop
nop
nop
cmp word [edi + eax + 2], 0
lea eax, [eax + 2]
jne 0x421350
sar eax, 1
sar ebx, 1
lea ecx, [ebx + eax]
add ecx, 0xa
test ecx, ecx
jns 0x421370
mov eax, 0xffffffff
jmp 0x421379
add ebx, eax
lea eax, [ebx*2 + 0x14]
mov dword [esp + 4], edx
push eax
call fcn.0040cad0
add esp, 4
movzx ecx, word [edi]
mov edx, eax
test cx, cx
je 0x4213b1
add edi, 2
mov edx, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [edx], cx
add edx, 2
movzx ecx, word [edi]
add edi, 2
test cx, cx
jne 0x4213a0
mov dword [esp + 0xc], eax
mov eax, edx
mov word [edx], 0x2f
mov dword [esp + 0x10], 0x972499cb
mov dword [esp + 0x14], 0x93199509
mov dword [esp + 0x18], 0x8f0291c2
mov dword [esp + 0x1c], 0x8b068d04
mov word [esp + 0x20], 0x8988
lea ecx, [esp + 0x26]
mov word [ecx], 0
mov dword [ecx - 4], 0
mov ecx, 0xa6
mov edx, 0x59
nop
nop
nop
movzx edi, byte [esp + ecx - 0x96]
mov esi, edx
and esi, edi
mov ebx, ecx
xor ebx, edi
add ebx, edi
sub ebx, esi
not edi
or edi, edx
and ebx, edi
add bl, 0xc2
mov byte [esp + ecx - 0x96], bl
inc ecx
dec edx
cmp ecx, 0xbe
jne 0x421400
add eax, 2
movzx ecx, word [esp + 0x78]
test cx, cx
je 0x421451
lea edx, [esp + 0x7a]
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x421440
mov word [eax], 0
movzx ecx, word [esp + 0x10]
test cx, cx
mov esi, dword [esp + 4]
je 0x421481
lea edx, [esp + 0x12]
nop
nop
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x421470
mov word [eax], 0
mov ebx, 0xffffffff
push dword [esp + 0x34]
call fcn.004058d0
add esp, 4
mov edi, eax
nop
nop
nop
nop
nop
nop
nop
cmp byte [edi + ebx + 1], 0
lea ebx, [ebx + 1]
jne 0x4214a0
mov ecx, dword [ebp + 8]
push ebx
push edi
mov ebx, dword [esp + 0x14]
push ebx
call fcn.0040d350
mov dword [esp + 0x30], eax
push edi
call fcn.00405960
add esp, 4
push ebx
mov ebx, dword [esp + 0x34]
call fcn.0040cae0
add esp, 4
lea edi, [esp + 0x38]
jmp 0x420bf2
lea edx, [esp + 0x78]
mov ebx, edx
test ecx, ecx
je 0x42157d
sar ecx, 1
mov esi, ecx
mov ebx, edx
and esi, 3
je 0x421523
xor edi, edi
mov dword [esp + 0xc], esi
nop
nop
nop
nop
nop
movzx esi, word [eax]
xor edx, edx
test si, si
setne dl
lea eax, [eax + edx*2]
mov word [ebx], si
mov esi, dword [esp + 0xc]
add ebx, 2
inc edi
cmp esi, edi
jne 0x421500
mov esi, ecx
sub esi, edi
jmp 0x421525
mov esi, ecx
dec ecx
cmp ecx, 3
jb 0x42157d
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 esi, 0xfffffffc
jne 0x42152b
mov word [ebx], 0
cmp byte [esp + 0x77], 0
jns 0x4211be
jmp 0x4211b2
mov edi, esi
mov dword [esp + 8], 0
jmp 0x4215a8
mov dword [esp + 8], 0
mov edi, esi
lea ecx, [esp + 0x38]
call fcn.0043fa60
mov dword [esp + 0x140], 0x3f464357
mov byte [esp + 0x144], 0xc8
mov dword [esp + 0x145], 0
mov dword [esp + 0x148], 0
xor eax, eax
xor ebx, ebx
nop
nop
mov ecx, ebx
and ecx, 0xc
mov edx, eax
xor edx, 0x256d5416
add edx, ecx
mov esi, 0x4f2d762
sub esi, edx
mov ecx, 0x1cf2d762
sub ecx, edx
movzx edx, byte [esp + eax + 0x140]
and esi, 0x484022b
and ecx, 0xf3018154
or ecx, esi
mov esi, edx
and esi, 0x2b
or esi, 0xc01989c0
and edx, 0xffffffd4
xor edx, esi
xor edx, 0xc4ffffeb
xor ecx, 0xfb1989d4
mov esi, edx
and esi, ecx
add ecx, edx
add esi, esi
sub ecx, esi
add cl, 0x81
mov byte [esp + eax + 0x140], cl
inc eax
add ebx, 2
cmp eax, 0xc
jne 0x4215e0
movzx eax, byte [esp + 0x140]
test al, al
je 0x42166b
lea ecx, [esp + 0x141]
nop
mov byte [edi], al
inc edi
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x421660
mov byte [edi], 0
mov eax, dword [ebp + 0xc]
mov dword [eax], edi
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 0x4215a6
cmp eax, dword [esp + 0x50]
je 0x4215a6
push eax
call fcn.0040cae0
add esp, 4
mov dword [esp + 0x4c], 0
jmp 0x4215a6