Function at 0x420290
Capabilities:
Authenticate hmac
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 + 0x5c], 0
mov dword [esp + 0x58], 0
mov dword [esp + 0x48], 0
mov dword [esp + 0x140], 0x8fe6e9f7
mov byte [esp + 0x144], 0x98
mov dword [esp + 0x145], 0
mov ecx, 0xbdfce1b
nop
nop
nop
movzx edx, byte [esp + ecx - 0xbdfccdb]
xor edx, ecx
mov esi, edx
and esi, 1
or edx, 1
add edx, esi
add dl, 0x78
mov byte [esp + ecx - 0xbdfccdb], dl
inc ecx
cmp ecx, 0xbdfce24
jne 0x4202e0
mov ecx, dword [ebp + 0xc]
mov ebx, dword [ecx]
movzx ecx, byte [esp + 0x140]
test cl, cl
je 0x42032b
lea edx, [esp + 0x141]
nop
mov byte [ebx], cl
inc ebx
movzx ecx, byte [edx]
inc edx
test cl, cl
jne 0x420320
mov byte [ebx], 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 esi, [esp + 0x38]
xor edi, edi
push ecx
push edx
push esi
mov ecx, dword [ebp + 0x14]
push dword [ecx + 0x10]
push eax
push dword [ecx + 0xc]
call fcn.004227f0
add esp, 0x18
test al, al
je 0x421518
mov dword [esp + 0x140], 0x1599798
mov byte [esp + 0x144], 0xf4
mov dword [esp + 0x145], 0
mov byte [esp + 0x149], 0
mov eax, 0xb8cac27e
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 0x47353ec2]
mov edx, ecx
and edx, eax
add dl, dl
sub cl, dl
movzx ecx, cl
add ecx, eax
add cl, 0x8a
mov byte [esp + eax + 0x47353ec2], cl
inc eax
cmp eax, 0xb8cac288
jne 0x4203b0
movzx eax, byte [esp + 0x140]
mov edi, esi
test al, al
je 0x4203fb
lea ecx, [esp + 0x141]
nop
nop
nop
nop
mov byte [ebx], al
inc ebx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x4203f0
mov dword [esp + 4], ebx
mov byte [ebx], 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], 0x627a7631
mov dword [esp + 0x144], 0xd0e6b00
mov dword [esp + 0x148], 0x2713026d
mov dword [esp + 0x14c], 0x18191e1f
mov dword [esp + 0x150], 0x727b2568
mov dword [esp + 0x154], 0x6d767402
mov dword [esp + 0x158], 0x6c6d6263
mov dword [esp + 0x15c], 0x6451191a
mov dword [esp + 0x160], 0x1a7f127f
mov dword [esp + 0x164], 0x8086e7f
mov dword [esp + 0x168], 0x66411c7c
mov dword [esp + 0x16c], 0x47686506
mov dword [esp + 0x170], 0x7c2a0248
mov dword [esp + 0x174], 0x3c3d7a7e
mov dword [esp + 0x178], 0x37417a3b
mov dword [esp + 0x17c], 0x48494e4f
mov dword [esp + 0x180], 0x2237253f
mov dword [esp + 0x184], 0x506d4c55
mov dword [esp + 0x188], 0x5c533d40
mov dword [esp + 0x18c], 0x61595e5f
mov dword [esp + 0x190], 0xa4a55a4e
mov dword [esp + 0x194], 0xdab39ea7
mov dword [esp + 0x198], 0x939ebe9a
mov dword [esp + 0x19c], 0xb59abdbe
mov dword [esp + 0x1a0], 0xb4b5aaab
mov dword [esp + 0x1a4], 0xd2828ec3
mov dword [esp + 0x1a8], 0xc9bfc2b3
mov dword [esp + 0x1ac], 0xb885dc87
mov dword [esp + 0x1b0], 0x8485babb
mov dword [esp + 0x1b4], 0x94818687
mov dword [esp + 0x1b8], 0x8efbfebf
mov dword [esp + 0x1bc], 0x88898e8f
mov dword [esp + 0x1c0], 0xfb89e8fd
mov dword [esp + 0x1c4], 0xafe6aa97
mov byte [esp + 0x1c8], 0x50
mov word [esp + 0x1cd], 0
mov dword [esp + 0x1c9], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0xae
xor cl, byte [esp + eax + 0x140]
add cl, 0x9a
mov byte [esp + eax + 0x140], cl
inc eax
cmp eax, 0x8f
jne 0x4205c0
mov dword [esp + 0x78], 0x904abebe
mov dword [esp + 0x7c], 0x40f71558
mov dword [esp + 0x80], 0x53bcf030
mov dword [esp + 0x84], 0x67666564
mov dword [esp + 0x88], 0x7bee66fd
mov dword [esp + 0x8c], 0x474fe424
mov dword [esp + 0x90], 0x7b7a7978
mov dword [esp + 0x94], 0x2f46ec2c
mov dword [esp + 0x98], 0xd40aadf3
mov dword [esp + 0x9c], 0x9b9a8eea
mov dword [esp + 0xa0], 0x9f9e9d9c
mov dword [esp + 0xa4], 0x93929190
mov dword [esp + 0xa8], 0xc01aeeee
mov dword [esp + 0xac], 0xc6061568
mov dword [esp + 0xb0], 0x46c1018e
mov dword [esp + 0xb4], 0x57565554
mov dword [esp + 0xb8], 0xb722008
mov dword [esp + 0xbc], 0xafd2f135
mov dword [esp + 0xc0], 0xab233cf0
mov dword [esp + 0xc4], 0xdfa6a5a4
mov dword [esp + 0xc8], 0xa3a2a198
mov dword [esp + 0xcc], 0xe125e5bc
mov dword [esp + 0xd0], 0xed21e1d8
mov dword [esp + 0xd4], 0x592dedcc
mov dword [esp + 0xd8], 0xb3b2b1b0
mov dword [esp + 0xdc], 0xf3d218d8
mov dword [esp + 0xe0], 0x9b13d088
mov dword [esp + 0xe4], 0x87185adc
mov dword [esp + 0xe8], 0x83828180
mov dword [esp + 0xec], 0xc79e9d9c
mov dword [esp + 0xf0], 0xf69d9301
mov dword [esp + 0xf4], 0x97969594
mov dword [esp + 0xf8], 0xefc60ac8
mov dword [esp + 0xfc], 0xce9fb5ec
mov byte [esp + 0x100], 0xe8
mov byte [esp + 0x105], 0
mov dword [esp + 0x101], 0
mov eax, 0x3c
mov ecx, 0x43
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax + 0x3c]
mov esi, eax
and esi, 0x27
mov ebx, ecx
and ebx, 0xd8
or ebx, esi
mov esi, ecx
or esi, edx
not edx
xor ebx, 0xd8
or ebx, edx
and ebx, esi
mov dl, 0x53
sub dl, bl
mov byte [esp + eax + 0x3c], dl
inc eax
dec ecx
cmp eax, 0xca
jne 0x420780
lea eax, [esp + 0x140]
lea edx, [esp + 0x78]
lea ecx, [esp + 0x130]
push eax
push 0x88
push edx
push edi
call fcn.00441260
mov dword [esp + 0x12c], edx
mov dword [esp + 0x128], eax
xor ebx, ebx
or eax, edx
je 0x42088d
mov dword [esp + 0x140], 0xe1787544
mov byte [esp + 0x144], 0xf4
mov dword [esp + 0x145], 0
mov dword [esp + 0x148], 0
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + ebx + 0x140]
lea eax, [ebx + ebx]
mov esi, eax
and esi, 0xc
mov edx, ebx
xor edx, 0x8521b5d6
add edx, esi
mov esi, ecx
and esi, edx
add esi, esi
sub edx, esi
add dl, cl
add dl, 0xd2
mov byte [esp + ebx + 0x140], dl
and eax, 2
xor ebx, 1
add ebx, eax
cmp ebx, 0xc
jb 0x420820
movzx eax, byte [esp + 0x140]
test al, al
mov ebx, dword [esp + 4]
je 0x4208a0
lea ecx, [esp + 0x141]
xor edi, edi
lea edx, [esp + 0x38]
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [ebx], al
inc ebx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x420880
jmp 0x4208a6
mov dword [esp + 0xc], 0
mov ebx, dword [esp + 4]
xor edi, edi
jmp 0x421520
xor edi, edi
lea edx, [esp + 0x38]
mov byte [ebx], 0
lea eax, [esp + 0x128]
lea ecx, [esp + 0x130]
push 0
push 8
push eax
push edx
call fcn.00441260
mov dword [esp + 0x124], edx
mov dword [esp + 0x120], eax
or eax, edx
je 0x421518
mov dword [esp + 0x140], 0x3b989896
mov byte [esp + 0x144], 0x20
mov dword [esp + 0x145], 0
mov word [esp + 0x149], 0
mov eax, 0x49
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 0xf7]
mov edx, eax
and edx, ecx
or ecx, eax
xor ecx, edx
add cl, 0x93
mov byte [esp + eax + 0xf7], cl
inc eax
cmp eax, 0x54
jne 0x420910
movzx eax, byte [esp + 0x140]
test al, al
je 0x42095b
lea ecx, [esp + 0x141]
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 0x420950
mov byte [ebx], 0
lea eax, [esp + 0x120]
lea edx, [esp + 0x4c]
lea ecx, [esp + 0x38]
push 0
push 8
push eax
push edx
call fcn.00440860
mov eax, dword [esp + 0x4c]
cmp eax, dword [esp + 0x50]
je 0x421518
mov dword [esp + 0x140], 0x8f6e6f73
mov byte [esp + 0x144], 0x98
mov dword [esp + 0x145], 0
mov byte [esp + 0x149], 0
mov eax, 0x1e60fcdb
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax - 0x1e60fb9b]
xor ecx, eax
mov edx, ecx
and edx, 0x38
xor ecx, 0xb8
lea ecx, [ecx + edx*2]
inc cl
mov byte [esp + eax - 0x1e60fb9b], cl
inc eax
cmp eax, 0x1e60fce5
jne 0x4209c0
movzx eax, byte [esp + 0x140]
test al, al
je 0x420a0b
lea ecx, [esp + 0x141]
nop
nop
nop
nop
mov byte [ebx], al
inc ebx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x420a00
mov byte [ebx], 0
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x50]
mov dword [esp + 0x108], ecx
cmp eax, ecx
je 0x421518
mov dword [esp + 0xc], 0
lea esi, [esp + 0x38]
jmp 0x420a7b
mov dword [esp + 8], 0
xor edi, edi
push dword [esp + 0x14]
call fcn.00404960
add esp, 4
mov eax, dword [esp + 0xc]
and al, 1
or al, byte [esp + 8]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x10c]
add eax, 8
cmp eax, dword [esp + 0x108]
je 0x4215bf
mov ecx, dword [eax]
mov dword [esp + 8], ecx
mov dword [esp + 0x10c], eax
mov eax, dword [eax + 4]
mov dword [esp + 0x10], eax
push 0x198
push 0
lea eax, [esp + 0x148]
push eax
call fcn.0040ca80
add esp, 0xc
xor eax, eax
jmp 0x420ac6
mov ebx, dword [esp + 4]
lea esi, [esp + 0x38]
mov eax, dword [esp + 0x14]
inc eax
cmp eax, 0xb
je 0x420d30
mov dword [esp + 0x14], eax
mov ecx, esi
push 0
push 0
push 0x198
lea eax, [esp + 0x14c]
push eax
push dword [esp + 0x20]
push dword [esp + 0x1c]
call fcn.004406f0
test eax, eax
js 0x420ab8
cmp byte [esp + 0x210], 0
sete al
xor al, 0x31
cmp byte [esp + 0x211], 0
mov byte [esp + 0x60], al
sete cl
xor cl, 0x31
mov byte [esp + 0x61], cl
cmp byte [esp + 0x212], 0
sete cl
xor cl, 0x31
mov byte [esp + 0x62], cl
cmp byte [esp + 0x2d0], 0
sete cl
xor cl, 0x31
mov byte [esp + 0x63], cl
mov word [esp + 0x64], 0xa
xor ecx, ecx
nop
nop
mov byte [ebx + ecx], al
movzx eax, byte [esp + ecx + 0x61]
inc ecx
test al, al
jne 0x420b40
mov byte [ebx + ecx], 0
movzx eax, byte [esp + 0x212]
test al, al
jne 0x420d50
mov edx, dword [esp + 0x184]
or edx, dword [esp + 0x180]
je 0x420d50
add ebx, ecx
mov dword [esp + 0x78], 0x319798a3
mov byte [esp + 0x7c], 0x3c
lea eax, [esp + 0x7d]
mov byte [eax + 2], 0
mov word [eax], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, eax
and edx, 3
xor edx, 0x3ec19b13
mov ecx, eax
and ecx, 4
sub ecx, edx
mov esi, 0xe2
sub esi, ecx
add ecx, 0xb7b8231d
mov edi, esi
and edi, 0xd0
mov edx, ecx
and edx, 0x2f
or edx, edi
xor edx, 0x2f
and edx, esi
movzx esi, byte [esp + eax + 0x78]
not edx
and edx, esi
or ecx, esi
not ecx
or ecx, edx
lea edx, [ecx + ecx]
not edx
add edx, ecx
mov ecx, edx
and ecx, 0x4d
xor edx, 0xcd
lea ecx, [edx + ecx*2]
inc cl
mov byte [esp + eax + 0x78], cl
inc eax
cmp eax, 8
jne 0x420ba0
movzx eax, byte [esp + 0x78]
test al, al
je 0x420c30
lea ecx, [esp + 0x79]
lea edx, [esp + 0x78]
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 0x420c20
jmp 0x420c34
lea edx, [esp + 0x78]
mov dword [esp + 4], ebx
mov byte [ebx], 0
mov dword [esp + 0x1c], 0xffffffff
mov dword [esp + 0x18], 0xff676980
mov dword [esp + 0x78], 0xf4f50a0b
mov dword [esp + 0x7c], 0
mov eax, 0xe87bda01
mov ecx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [ecx]
mov edi, eax
or edi, edx
lea esi, [eax + 0x17842600]
mov ebx, edx
not ebx
or ebx, esi
add ebx, edx
mov esi, 0xfffffffe
sub esi, ebx
and esi, edi
mov edx, 0x8a6b4208
sub edx, esi
mov edi, edx
add esi, 0x7594bdf7
mov ebx, esi
and esi, 0x592f5e2d
and edx, 0xa2d0a1d2
or edx, esi
not ebx
and ebx, 1
or ebx, edx
and edi, 1
or ebx, edi
xor ebx, 0x2c
add ebx, edi
mov byte [ecx], bl
inc ecx
dec eax
cmp eax, 0xe87bd9f9
jne 0x420c70
mov eax, dword [0x4521f4]
test eax, eax
mov edi, 0
je 0x420ab0
mov ecx, dword [esp + 0x78]
xor edx, edx
mov esi, dword [0x4521f8]
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [esi + edx*8], 0xf8fd61b8
je 0x420d03
inc edx
cmp eax, edx
jne 0x420cf0
jmp 0x420ab0
mov eax, dword [esi + edx*8 + 4]
cmp eax, ecx
je 0x420ab0
lea ecx, [esp + 0x18]
push ecx
push 0
push 2
push dword [0x4521fc]
push eax
call fcn.00442500
add esp, 0x14
jmp 0x420ab0
movzx eax, byte [esp + 0x212]
test al, al
jne 0x420d5a
jmp 0x420a64
add ebx, ecx
test al, al
je 0x420a64
call fcn.00404b20
mov dword [esp + 0x14], eax
push eax
call fcn.00404750
add esp, 4
mov edi, eax
mov dword [esp + 0x78], 0x1bb9c5bf
mov byte [esp + 0x7c], 0x20
lea eax, [esp + 0x7d]
mov byte [eax + 2], 0
mov word [eax], 0
mov eax, 0xe8b94779
nop
nop
nop
movzx ecx, byte [esp + eax + 0x1746b8ff]
mov edx, eax
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]
add cl, 0xa2
mov byte [esp + eax + 0x1746b8ff], cl
inc eax
cmp eax, 0xe8b94781
jne 0x420d90
movzx eax, byte [esp + 0x78]
test al, al
je 0x420de0
lea edx, [esp + 0x79]
lea ecx, [esp + 0x38]
mov byte [ebx], al
inc ebx
movzx eax, byte [edx]
inc edx
test al, al
jne 0x420dd0
jmp 0x420de4
lea ecx, [esp + 0x38]
mov byte [ebx], 0
mov eax, dword [esp + 0x178]
mov edx, dword [esp + 0x17c]
mov esi, eax
or esi, edx
je 0x420e30
mov dword [esp + 4], edi
push 0
push 0
push 0x40
mov edi, ecx
lea esi, [esp + 0x84]
push esi
push edx
push eax
call fcn.004406f0
test eax, eax
js 0x420e34
mov ecx, edi
mov edx, esi
mov edi, dword [esp + 4]
push edi
call fcn.00423180
add esp, 4
jmp 0x420e3a
xor eax, eax
jmp 0x420e3a
xor eax, eax
mov edi, dword [esp + 4]
mov dword [esp + 0x78], 0x8728201b
mov byte [esp + 0x7c], 0xb8
lea ecx, [esp + 0x7d]
mov byte [ecx + 4], 0
mov dword [ecx], 0
mov ecx, 0x2914db9f
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + ecx - 0x2914db27]
lea esi, [ecx - 0x2914db00]
and esi, edx
or edx, ecx
xor edx, esi
mov esi, edx
and esi, 0x64
xor edx, 0xe4
lea edx, [edx + esi*2]
inc dl
mov byte [esp + ecx - 0x2914db27], dl
inc ecx
cmp ecx, 0x2914dba9
jne 0x420e60
movzx ecx, byte [esp + 0x78]
test cl, cl
je 0x420ec0
lea edx, [esp + 0x79]
lea esi, [esp + 0x38]
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 0x420eb0
jmp 0x420ec4
lea esi, [esp + 0x38]
mov byte [ebx], 0
test al, al
je 0x420a40
push edi
call fcn.00404920
add esp, 4
test eax, eax
je 0x42102e
mov eax, dword [esp + 0x298]
mov edx, dword [esp + 0x29c]
add eax, 0x28
adc edx, 0
mov ecx, esi
push 0
push 0
push 8
lea edi, [esp + 0x124]
push edi
push edx
push eax
call fcn.004406f0
test eax, eax
mov dword [esp + 4], ebx
js 0x42115f
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 edi, [esp + 0x11c]
push edi
push edx
push eax
call fcn.004406f0
test eax, eax
js 0x42115f
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 edi, [esp + 0x6c]
push edi
push edx
push eax
call fcn.004406f0
test eax, eax
js 0x42115f
cmp byte [esp + 0x77], 0
lea edx, [esp + 0x60]
js 0x421039
mov dword [esp + 0x18], 0xff909dd
mov dword [esp + 0x1c], 0x3f40de9
mov dword [esp + 0x20], 0x7c20120
mov dword [esp + 0x24], 0x1bee05e5
mov dword [esp + 0x28], 0x1ff219f9
mov word [esp + 0x2c], 0x1d1c
lea eax, [esp + 0x2e]
mov word [eax + 4], 0
mov dword [eax], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0xc2
xor cl, byte [esp + eax + 0x18]
add cl, 0x36
mov byte [esp + eax + 0x18], cl
inc eax
cmp eax, 0x1c
jne 0x420fd0
movzx edi, word [esp + 0x18]
test di, di
mov dword [esp + 0x10], edx
je 0x421072
lea eax, [esp + 0x18]
mov ecx, edx
jmp 0x421008
movzx edi, word [eax]
test di, di
je 0x42106a
movzx esi, word [ecx]
test si, si
je 0x4210a3
add ecx, 2
add eax, 2
lea ebx, [edx + 2]
cmp si, di
je 0x421026
mov edx, ebx
mov ecx, ebx
je 0x421000
lea eax, [esp + 0x18]
jmp 0x421000
mov al, 1
mov dword [esp + 8], eax
jmp 0x420a48
mov ecx, dword [esp + 0x60]
mov edx, dword [esp + 0x64]
mov eax, ecx
or eax, edx
je 0x42115f
mov eax, dword [esp + 0x68]
mov ebx, eax
inc ebx
mov dword [esp + 8], ecx
mov dword [esp + 0x10], edx
jns 0x421116
mov eax, 0xffffffff
jmp 0x42111d
lea ebx, [esp + 0x78]
test edx, edx
je 0x4210a7
movzx edi, word [edx + 0x14]
lea ebx, [esp + 0x78]
test di, di
je 0x4210a7
lea eax, [edx + 0x14]
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp di, 0x5c
je 0x4210cb
movzx edi, word [edx + ecx + 0x16]
add ecx, 2
test di, di
jne 0x421090
lea ebx, [esp + 0x78]
cmp byte [esp + 0x77], 0
jns 0x4210ba
push dword [esp + 0x10]
call fcn.0040ca00
add esp, 4
lea esi, [esp + 0x78]
cmp esi, ebx
jne 0x421206
jmp 0x42115f
lea edx, [esp + 0x78]
mov ebx, edx
test ecx, ecx
je 0x421503
sar ecx, 1
mov esi, ecx
mov ebx, edx
and esi, 3
je 0x4214a9
xor edi, edi
mov dword [esp + 8], esi
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 + 8]
add ebx, 2
inc edi
cmp esi, edi
jne 0x4210f0
mov esi, ecx
sub esi, edi
jmp 0x4214ab
lea eax, [eax*2 + 2]
push eax
call fcn.0040c9f0
add esp, 4
mov edi, eax
mov eax, ebx
and eax, 0xfffffffd
mov ecx, ebx
and ecx, 2
or ebx, 2
imul ebx, ecx
xor ecx, 2
imul ecx, eax
add ebx, ecx
mov ecx, esi
push 0
push 0
push ebx
push edi
push dword [esp + 0x20]
push dword [esp + 0x1c]
call fcn.004406f0
mov edx, edi
test eax, eax
jns 0x420f89
mov dword [esp + 0x18], 0x36c0149
mov dword [esp + 0x1c], 0x7690567
mov dword [esp + 0x20], 0xb64096f
mov dword [esp + 0x24], 0xf7a0d65
mov dword [esp + 0x28], 0x1312117f
xor eax, eax
mov ecx, 0xaf4641ff
nop
nop
movzx esi, byte [esp + eax + 0x18]
mov edi, ecx
and edi, 0xa9440111
mov edx, eax
and edx, 0xe
or edx, edi
xor edx, esi
mov esi, edx
xor esi, 0xf9fdbf11
and edx, 1
mov edi, esi
neg edi
and edi, 0xfe
or esi, 0xfe
xor esi, edi
lea edx, [esi + edx*2]
mov byte [esp + eax + 0x18], dl
inc eax
dec ecx
cmp eax, 0x14
jne 0x421190
movzx eax, word [esp + 0x18]
lea esi, [esp + 0x78]
mov ebx, esi
test ax, ax
je 0x421201
lea ecx, [esp + 0x1a]
mov ebx, esi
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 0x4211f0
mov word [ebx], 0
mov edx, ebx
sub edx, esi
mov ecx, edx
shr ecx, 2
mov eax, esi
mov esi, dword [esp + 4]
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, 0x78
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 0x421251
mov ecx, edx
and ecx, 2
movzx eax, byte [eax + ecx]
mov esi, dword [esp + 8]
mov byte [esi + ecx], al
mov dword [esp + 0x18], 0xdbafad76
mov word [esp + 0x1c], 0x4d72
lea eax, [esp + 0x2e]
mov word [eax - 0xc], 0
mov dword [eax - 0x10], 0
mov eax, 0x51ce512
mov ecx, 0xb2e31aed
nop
nop
nop
nop
nop
movzx edi, byte [esp + eax - 0x51ce4fa]
mov ebx, ecx
and ebx, 0x92c318bc
mov esi, eax
and esi, 0x40c2503
or esi, ebx
xor esi, edi
mov ebx, esi
not ebx
and esi, 0x5b
xor esi, 0x43
and ebx, 0xa4
sub ebx, esi
inc bl
mov byte [esp + eax - 0x51ce4fa], bl
inc eax
dec ecx
cmp eax, 0x51ce51e
jne 0x421280
mov esi, dword [esp + 4]
add esi, edx
movzx eax, byte [esp + 0x18]
test al, al
je 0x4212eb
lea ecx, [esp + 0x19]
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 0x4212e0
mov byte [esi], 0
mov eax, dword [ebp + 0x14]
mov edi, dword [eax]
mov eax, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [edi + eax + 2], 0
lea eax, [eax + 2]
jne 0x421300
sar eax, 1
sar edx, 1
lea ecx, [edx + eax]
add ecx, 0xa
test ecx, ecx
jns 0x421320
mov eax, 0xffffffff
jmp 0x421329
add edx, eax
lea eax, [edx*2 + 0x14]
mov dword [esp + 4], esi
push eax
call fcn.0040c9f0
add esp, 4
movzx ecx, word [edi]
mov edx, eax
test cx, cx
je 0x421361
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 0x421350
mov dword [esp + 0x10], eax
mov eax, edx
mov word [edx], 0x2f
mov dword [esp + 0x18], 0x93249147
mov dword [esp + 0x1c], 0x9f019d31
mov dword [esp + 0x20], 0x9b06994e
mov dword [esp + 0x24], 0x871a851c
mov word [esp + 0x28], 0x8180
lea ecx, [esp + 0x2e]
mov byte [ecx - 2], 0
mov word [ecx - 4], 0
mov esi, 0x5802c4e4
mov edx, 0x27fd3b1b
nop
nop
nop
nop
nop
movzx ebx, byte [esp + esi - 0x5802c4cc]
mov edi, edx
and edi, 0x70
mov ecx, esi
and ecx, 0x8f
or ecx, edi
xor ecx, ebx
xor ecx, 0xf
and ecx, esi
add cl, cl
sub bl, cl
movzx ecx, bl
add ecx, esi
add cl, 0x8c
mov byte [esp + esi - 0x5802c4cc], cl
inc esi
dec edx
cmp esi, 0x5802c4f9
jne 0x4213b0
add eax, 2
movzx ecx, word [esp + 0x78]
test cx, cx
je 0x421411
lea edx, [esp + 0x7a]
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x421400
mov word [eax], 0
movzx ecx, word [esp + 0x18]
test cx, cx
mov ebx, dword [esp + 4]
je 0x421441
lea edx, [esp + 0x1a]
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 0x421430
mov word [eax], 0
xor esi, esi
push dword [esp + 0x14]
call fcn.00405720
add esp, 4
mov edi, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp byte [edi + esi], 0
lea esi, [esi + 1]
jne 0x421460
lea eax, [edi + esi]
dec eax
mov edx, edi
not edx
and edx, eax
xor eax, edi
add edx, edx
sub edx, eax
mov ecx, dword [ebp + 8]
push edx
push edi
mov esi, dword [esp + 0x18]
push esi
call fcn.0040d340
mov dword [esp + 8], eax
push edi
call fcn.004057b0
add esp, 4
push esi
call fcn.0040ca00
add esp, 4
xor edi, edi
lea esi, [esp + 0x38]
jmp 0x420a4a
mov esi, ecx
dec ecx
cmp ecx, 3
jb 0x421503
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 0x4214b1
mov word [ebx], 0
cmp byte [esp + 0x77], 0
jns 0x4210ba
jmp 0x4210ae
mov dword [esp + 0xc], 0
lea ecx, [esp + 0x38]
call fcn.0043feb0
mov dword [esp + 0x140], 0x31aaa19d
mov byte [esp + 0x144], 0x3c
mov dword [esp + 0x145], 0
mov byte [esp + 0x149], 0
nop
movzx eax, byte [esp + edi + 0x140]
mov ecx, edi
xor ecx, 0xf7c1a9b5
mov edx, edi
or edx, 0x83e564a
and ecx, edx
add ecx, edx
mov edx, ecx
not edx
or edx, eax
not eax
or eax, ecx
add eax, edx
mov cl, 0x8c
sub cl, al
mov byte [esp + edi + 0x140], cl
inc edi
cmp edi, 0xa
jne 0x421550
movzx eax, byte [esp + 0x140]
test al, al
je 0x4215ab
lea ecx, [esp + 0x141]
nop
nop
nop
nop
mov byte [ebx], al
inc ebx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x4215a0
mov byte [ebx], 0
mov eax, dword [ebp + 0xc]
mov dword [eax], ebx
mov eax, dword [esp + 0xc]
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0xc]
and cl, 1
mov dword [esp + 0xc], ecx
test eax, eax
je 0x421520
cmp eax, dword [esp + 0x50]
je 0x421520
push eax
call fcn.0040ca00
add esp, 4
mov dword [esp + 0x4c], 0
jmp 0x421520