Function at 0x41f870
Capabilities:
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 esi, dword [ebp + 0xc]
mov dword [esp + 0x54], 0
mov dword [esp + 0x50], 0
mov dword [esp + 0x40], 0
mov dword [esp + 0x140], 0xc16a7b65
mov byte [esp + 0x144], 0xd4
mov dword [esp + 0x145], 0
mov word [esp + 0x149], 0
mov ecx, 0x25e8322e
nop
nop
nop
movzx edx, byte [esp + ecx - 0x25e830ee]
mov ebx, edx
and ebx, ecx
add bl, bl
sub dl, bl
movzx edx, dl
add edx, ecx
add dl, 0x1a
mov byte [esp + ecx - 0x25e830ee], dl
inc ecx
cmp ecx, 0x25e83239
jne 0x41f8d0
mov esi, dword [esi]
movzx ecx, byte [esp + 0x140]
test cl, cl
je 0x41f91b
lea edx, [esp + 0x141]
nop
nop
nop
mov byte [esi], cl
inc esi
movzx ecx, byte [edx]
inc edx
test cl, cl
jne 0x41f910
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 ebx, [esp + 0x30]
push ecx
push edx
push ebx
push dword [edi + 0x10]
push eax
push dword [edi + 0xc]
call fcn.00421c20
add esp, 0x18
test al, al
je 0x420ab5
mov dword [esp + 0x140], 0x7fd7c5dc
mov byte [esp + 0x144], 0x48
mov dword [esp + 0x145], 0
mov byte [esp + 0x149], 0
xor eax, eax
nop
nop
nop
nop
mov ecx, eax
add cl, 0x93
xor cl, byte [esp + eax + 0x140]
add cl, 0x21
mov byte [esp + eax + 0x140], cl
inc eax
cmp eax, 0xa
jne 0x41f990
movzx eax, byte [esp + 0x140]
test al, al
je 0x41f9cb
lea ecx, [esp + 0x141]
nop
mov byte [esi], al
inc esi
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x41f9c0
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], 0x26e81d39
mov dword [esp + 0x144], 0xe42bfd0a
mov dword [esp + 0x148], 0xfa241412
mov dword [esp + 0x14c], 0x1c1b1a19
mov dword [esp + 0x150], 0xe2f82bf1
mov dword [esp + 0x154], 0x1d1a0715
mov dword [esp + 0x158], 0xe8e7e6e5
mov dword [esp + 0x15c], 0xf512d304
mov dword [esp + 0x160], 0x1fe419db
mov dword [esp + 0x164], 0xf6cbc71f
mov dword [esp + 0x168], 0xecefde3
mov dword [esp + 0x16c], 0xcf0cece0
mov dword [esp + 0x170], 0x34cefc1e
mov dword [esp + 0x174], 0xf3d7f7f5
mov dword [esp + 0x178], 0xcac021c7
mov dword [esp + 0x17c], 0xcccbcac9
mov dword [esp + 0x180], 0x3e2d2b21
mov dword [esp + 0x184], 0xd4e7c8d3
mov dword [esp + 0x188], 0xd8d133c4
mov dword [esp + 0x18c], 0xebdbdad9
mov dword [esp + 0x190], 0xa0dfded5
mov dword [esp + 0x194], 0x539aafa1
mov dword [esp + 0x198], 0xa69ea392
mov dword [esp + 0x19c], 0x5e5d9fa2
mov dword [esp + 0x1a0], 0xb0afaead
mov dword [esp + 0x1a4], 0x56828a5d
mov dword [esp + 0x1a8], 0x53b546b5
mov dword [esp + 0x1ac], 0xbc8f5881
mov dword [esp + 0x1b0], 0x80bfbebd
mov dword [esp + 0x1b4], 0x88838281
mov dword [esp + 0x1b8], 0x8a6972b1
mov dword [esp + 0x1bc], 0x8c8b8a89
mov dword [esp + 0x1c0], 0x759b6c63
mov dword [esp + 0x1c4], 0xa17ea691
mov byte [esp + 0x1c8], 0xd4
mov byte [esp + 0x1cd], 0
mov dword [esp + 0x1c9], 0
xor edi, edi
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov dword [esp], edi
movzx edx, byte [esp + ecx + 0x140]
mov edi, dword [esp]
and edi, 0xda
mov ebx, ecx
xor ebx, 0xed35a492
sub ebx, edi
mov edi, ebx
or edi, edx
and ebx, edx
lea edx, [ebx + ebx]
not edx
add edx, ebx
and edx, edi
mov ebx, edx
and ebx, 0xa00426de
xor ebx, 0xa20c36de
mov edi, ebx
and edi, 0xdc
mov eax, ebx
and eax, 2
or ebx, 2
imul ebx, eax
xor eax, 2
imul eax, edi
mov edi, dword [esp]
xor edx, 0x21
add edx, ebx
add edx, eax
inc dl
mov byte [esp + ecx + 0x140], dl
inc ecx
add edi, 2
cmp ecx, 0x8e
jne 0x41fb90
mov dword [esp + 0x70], 0x90daeeee
mov dword [esp + 0x74], 0x60973508
mov dword [esp + 0x78], 0x736c90d0
mov dword [esp + 0x7c], 0x7060504
mov dword [esp + 0x80], 0xb9e068d
mov dword [esp + 0x84], 0x671f84c4
mov dword [esp + 0x88], 0xb0a0908
mov dword [esp + 0x8c], 0xff26bcfc
mov dword [esp + 0x90], 0xd41a7db3
mov dword [esp + 0x94], 0x4b4a7eda
mov dword [esp + 0x98], 0x4f4e4d4c
mov dword [esp + 0x9c], 0x53525150
mov dword [esp + 0xa0], 0xa0eadede
mov dword [esp + 0xa4], 0xa6e6f538
mov dword [esp + 0xa8], 0x26a1e15e
mov dword [esp + 0xac], 0xd7d6d5d4
mov dword [esp + 0xb0], 0x1bb20018
mov dword [esp + 0xb4], 0xdff21155
mov dword [esp + 0xb8], 0xdb436c10
mov dword [esp + 0xbc], 0xefc6c5c4
mov dword [esp + 0xc0], 0xc3c2c1a8
mov dword [esp + 0xc4], 0x14505cc
mov dword [esp + 0xc8], 0x3d4101e8
mov dword [esp + 0xcc], 0x497d3ddc
mov dword [esp + 0xd0], 0xf3f2f1f0
mov dword [esp + 0xd4], 0xd3324808
mov dword [esp + 0xd8], 0xcb7330f8
mov dword [esp + 0xdc], 0xe768aa2c
mov dword [esp + 0xe0], 0xe3e2e1e0
mov dword [esp + 0xe4], 0x27eeedec
mov dword [esp + 0xe8], 0xd6edf361
mov dword [esp + 0xec], 0x97969594
mov dword [esp + 0xf0], 0xbf661a58
mov dword [esp + 0xf4], 0xfe4f559c
mov byte [esp + 0xf8], 0x98
mov dword [esp + 0xf9], 0
mov eax, 0xc4
mov ecx, 0x3b
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + eax - 0x54]
mov edx, ecx
xor edx, eax
and edx, edi
xor edx, eax
add dl, 0x2c
mov byte [esp + eax - 0x54], dl
inc eax
dec ecx
cmp eax, 0x151
jne 0x41fd90
lea eax, [esp + 0x140]
lea edx, [esp + 0x70]
lea ecx, [esp + 0x130]
push eax
push 0x88
push edx
lea ebx, [esp + 0x3c]
push ebx
call fcn.0043ed00
mov dword [esp + 0x12c], edx
mov dword [esp + 0x128], eax
or eax, edx
je 0x420ab5
mov dword [esp + 0x140], 0x49a0bdac
mov byte [esp + 0x144], 0x2c
mov dword [esp + 0x145], 0
mov word [esp + 0x149], 0
mov eax, 0x1c97420c
mov ecx, 0xc6d17bf3
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + eax - 0x1c9740cc]
mov edx, ecx
xor edx, eax
and edx, edi
xor edx, eax
add dl, 0xc4
mov byte [esp + eax - 0x1c9740cc], dl
inc eax
dec ecx
cmp eax, 0x1c974217
jne 0x41fe20
movzx eax, byte [esp + 0x140]
test al, al
je 0x41fe6b
lea ecx, [esp + 0x141]
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 0x41fe60
mov byte [esi], 0
lea eax, [esp + 0x128]
lea ecx, [esp + 0x130]
push 0
push 8
push eax
push ebx
call fcn.0043ed00
mov dword [esp + 0x124], edx
mov dword [esp + 0x120], eax
or eax, edx
je 0x420ab5
mov dword [esp + 0x140], 0xeb58584e
mov byte [esp + 0x144], 0xf0
mov dword [esp + 0x145], 0
mov dword [esp + 0x148], 0
mov edi, 0x6832a82b
mov eax, 0x97cd57d5
movzx edx, byte [esp + eax + 0x6832a96b]
mov dword [esp + 0xc], edx
lea ecx, [edi - 1]
mov dword [esp], ecx
and ecx, 0x28108834
mov ebx, eax
and ebx, 0x928d414b
or ebx, ecx
xor ebx, edx
xor ebx, 0xd2af614b
and ebx, eax
mov ecx, ebx
and ecx, 0x928d41fd
mov edx, ebx
and edx, 2
or ebx, 2
imul ebx, edx
xor edx, 2
imul edx, ecx
add ebx, edx
sub ebx, dword [esp + 0xc]
add ebx, edi
lea ecx, [ebx + ebx]
and ecx, 0x54
xor ebx, 0xd5
sub ebx, ecx
add bl, 2
mov byte [esp + eax + 0x6832a96b], bl
inc eax
mov ecx, dword [esp]
mov edi, ecx
cmp ecx, 0x6832a81f
jne 0x41fed0
movzx eax, byte [esp + 0x140]
test al, al
je 0x41ff6b
lea ecx, [esp + 0x141]
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 0x41ff60
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.0043e150
mov eax, dword [esp + 0x44]
cmp eax, dword [esp + 0x48]
je 0x420ab5
mov dword [esp + 0x140], 0xfb121307
mov byte [esp + 0x144], 0xe0
mov word [esp + 0x145], 0
mov byte [esp + 0x147], 0
mov eax, 9
mov ecx, 0x56
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edi, ecx
and edi, 0x43
mov edx, eax
and edx, 0x1c
or edx, edi
xor dl, byte [esp + eax + 0x137]
xor dl, 0x63
add dl, 0x33
mov byte [esp + eax + 0x137], dl
inc eax
dec ecx
cmp eax, 0x11
jne 0x41ffd0
movzx eax, byte [esp + 0x140]
test al, al
je 0x42001b
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 0x420010
mov byte [esi], 0
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x108], ecx
cmp eax, ecx
je 0x420ab5
mov dword [esp + 4], 0
lea ebx, [esp + 0x30]
jmp 0x42009b
mov dword [esp], 0
push dword [esp + 0xc]
call fcn.00404770
add esp, 4
movzx eax, byte [esp]
mov ecx, dword [esp + 4]
and cl, 1
movzx ecx, cl
mov edx, eax
not edx
and edx, ecx
xor eax, ecx
add eax, ecx
cmp eax, edx
setne al
mov dword [esp + 4], eax
mov eax, dword [esp + 0x10c]
add eax, 8
cmp eax, dword [esp + 0x108]
je 0x420b91
mov ecx, dword [eax]
mov dword [esp + 0xc], 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.0040c560
add esp, 0xc
xor eax, eax
jmp 0x4200dd
mov eax, dword [esp]
inc eax
cmp eax, 0xb
je 0x4202d0
mov dword [esp], eax
mov ecx, ebx
push 0
push 0
push 0x198
lea eax, [esp + 0x14c]
push eax
push dword [esp + 0x18]
push dword [esp + 0x20]
call fcn.0043dfe0
test eax, eax
js 0x4200d0
movzx eax, byte [esp + 0x210]
movzx ecx, byte [esp + 0x211]
or al, 0x30
mov byte [esp + 0x58], al
or cl, 0x30
mov byte [esp + 0x59], cl
movzx ecx, byte [esp + 0x212]
or cl, 0x30
mov byte [esp + 0x5a], cl
movzx ecx, byte [esp + 0x2d0]
or cl, 0x30
mov byte [esp + 0x5b], cl
mov word [esp + 0x5c], 0xa
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [esi + ecx], al
movzx eax, byte [esp + ecx + 0x59]
inc ecx
test al, al
jne 0x420150
mov byte [esi + ecx], 0
cmp byte [esp + 0x212], 0
jne 0x4202e0
add esi, ecx
mov dword [esp + 0x70], 0x997b4077
mov byte [esp + 0x74], 0xe4
lea eax, [esp + 0x75]
mov dword [eax + 3], 0
mov dword [eax], 0
mov eax, 0xd6329b58
mov ecx, 0x27
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + eax + 0x29cd6518]
mov ebx, ecx
and ebx, 0x23
mov edx, eax
and edx, 0x5c
or edx, ebx
xor edx, eax
xor edx, 0xdc
and edx, edi
xor edx, eax
mov ebx, edx
and ebx, 0x47
add ebx, edx
or edx, 0xb8
sub ebx, edx
mov byte [esp + eax + 0x29cd6518], bl
inc eax
dec ecx
cmp eax, 0xd6329b64
jne 0x4201a0
movzx eax, byte [esp + 0x70]
test al, al
je 0x4201fb
lea ecx, [esp + 0x71]
nop
nop
nop
nop
mov byte [esi], al
inc esi
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x4201f0
mov byte [esi], 0
mov dword [esp + 0x14], 0xffffffff
mov dword [esp + 0x10], 0xff676980
mov dword [esp + 0x70], 0x989b9a9d
mov word [esp + 0x74], 0
xor eax, eax
xor ecx, ecx
lea ebx, [esp + 0x30]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edi, eax
and edi, 6
mov edx, ecx
xor edx, 0xad5ae75b
add edx, edi
lea edi, [edx + edx]
not edi
add edi, edx
and edi, 0xb6
and edx, 0x49
or edx, edi
xor dl, byte [esp + ecx + 0x70]
xor dl, 0xb6
add dl, 0x39
mov byte [esp + ecx + 0x70], dl
inc ecx
add eax, 2
cmp ecx, 6
jne 0x420230
mov eax, dword [0x44fa10]
test eax, eax
je 0x4200d0
mov ecx, dword [esp + 0x70]
xor edx, edx
mov edi, dword [0x44fa14]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [edi + edx*8], 0xf8fd61b8
je 0x4202a3
inc edx
cmp eax, edx
jne 0x420290
jmp 0x4200d0
mov eax, dword [edi + edx*8 + 4]
cmp eax, ecx
je 0x4200d0
lea ecx, [esp + 0x10]
push ecx
push 0
push 2
push dword [0x44fa18]
push eax
call fcn.00440700
add esp, 0x14
jmp 0x4200d0
cmp byte [esp + 0x212], 0
jne 0x4202e2
jmp 0x420084
add esi, ecx
call fcn.00404930
mov dword [esp + 0xc], eax
push eax
call fcn.00404560
add esp, 4
mov dword [esp], eax
mov dword [esp + 0x70], 0x79dfd3d9
mov byte [esp + 0x74], 0x7c
lea eax, [esp + 0x75]
mov dword [eax + 3], 0
mov dword [eax], 0
xor edi, edi
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + ecx + 0x70]
mov ebx, ecx
xor ebx, 0x6c
mov eax, edi
and eax, 6
sub eax, ebx
lea ebx, [edx + edx]
not ebx
add ebx, edx
xor ebx, edx
and ebx, eax
xor ebx, edx
add bl, 0x1c
mov byte [esp + ecx + 0x70], bl
inc ecx
add edi, 2
cmp ecx, 0xc
jne 0x420320
movzx eax, byte [esp + 0x70]
test al, al
je 0x42036b
lea ecx, [esp + 0x71]
nop
nop
nop
nop
nop
mov byte [esi], al
inc esi
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x420360
mov byte [esi], 0
mov eax, dword [esp + 0x178]
mov edx, dword [esp + 0x17c]
xor ebx, ebx
mov ecx, eax
or ecx, edx
je 0x4203c0
lea ecx, [esp + 0x30]
push 0
push 0
push 0x40
lea edi, [esp + 0x7c]
push edi
push edx
push eax
call fcn.0043dfe0
test eax, eax
js 0x4203c0
lea ecx, [esp + 0x30]
mov edx, edi
push dword [esp]
call fcn.00422540
add esp, 4
jmp 0x4203c2
xor eax, eax
mov dword [esp + 0x70], 0x1ff8f0fb
mov byte [esp + 0x74], 8
lea ecx, [esp + 0x75]
mov byte [ecx + 2], 0
mov word [ecx], 0
xor ecx, ecx
nop
nop
mov edi, ebx
and edi, 6
mov edx, ecx
xor edx, 0x43
add edx, edi
xor dl, byte [esp + ecx + 0x70]
add dl, 0xb1
mov byte [esp + ecx + 0x70], dl
inc ecx
add ebx, 2
cmp ecx, 8
jne 0x4203e0
movzx ecx, byte [esp + 0x70]
test cl, cl
je 0x420430
lea edx, [esp + 0x71]
lea ebx, [esp + 0x30]
nop
nop
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 0x420420
jmp 0x420434
lea ebx, [esp + 0x30]
mov byte [esi], 0
test al, al
je 0x420050
push dword [esp]
call fcn.00404730
add esp, 4
test eax, eax
je 0x4205fe
mov eax, dword [esp + 0x298]
mov edx, dword [esp + 0x29c]
add eax, 0x28
adc edx, 0
mov ecx, ebx
push 0
push 0
push 8
lea edi, [esp + 0x124]
push edi
push edx
push eax
call fcn.0043dfe0
test eax, eax
js 0x420747
mov eax, dword [esp + 0x118]
mov edx, dword [esp + 0x11c]
add eax, 0x10
adc edx, 0
mov ecx, ebx
push 0
push 0
push 8
lea edi, [esp + 0x11c]
push edi
push edx
push eax
call fcn.0043dfe0
test eax, eax
js 0x420747
mov eax, dword [esp + 0x110]
mov edx, dword [esp + 0x114]
add eax, 0x10
adc edx, 0
mov ecx, ebx
push 0
push 0
push 0x18
lea edi, [esp + 0x64]
push edi
push edx
push eax
call fcn.0043dfe0
test eax, eax
js 0x420747
cmp byte [esp + 0x6f], 0
lea eax, [esp + 0x58]
mov dword [esp + 0x2c], eax
js 0x420608
mov dword [esp + 0x10], 0xf967fb07
mov dword [esp + 0x14], 0xe578e713
mov dword [esp + 0x18], 0xe12ee3c4
mov dword [esp + 0x1c], 0xed72ef0f
mov dword [esp + 0x20], 0xe90eeb03
mov word [esp + 0x24], 0x97e8
lea eax, [esp + 0x26]
mov word [eax + 4], 0
mov dword [eax], 0
mov eax, 0x921e1cab
mov ecx, 0x487872ac
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov dword [esp], ecx
movzx edx, byte [esp + eax + 0x6de1e365]
mov edi, eax
and edi, edx
add edi, edi
mov ebx, edi
sub ebx, edx
add ebx, ecx
or ebx, 1
add ebx, edx
sub edx, edi
sub ebx, edi
lea edi, [eax + ebx]
add edi, 0x256970a9
mov ecx, edi
and ecx, 2
mov ebx, edi
or edi, 2
imul edi, ecx
xor ecx, 2
and ebx, 0xfd
imul ebx, ecx
mov ecx, dword [esp]
add edx, eax
xor edx, 1
add edx, edi
add edx, ebx
add dl, 0xa8
mov byte [esp + eax + 0x6de1e365], dl
inc eax
dec ecx
cmp eax, 0x921e1cc7
jne 0x420550
movzx edi, word [esp + 0x10]
test di, di
je 0x42063e
lea eax, [esp + 0x10]
mov ecx, dword [esp + 0x2c]
mov edx, ecx
mov dword [esp], ecx
jmp 0x4205d8
movzx edi, word [eax]
test di, di
je 0x420653
movzx ebx, word [edx]
test bx, bx
je 0x420648
add edx, 2
add eax, 2
mov ecx, dword [esp]
add ecx, 2
cmp bx, di
je 0x4205f6
mov dword [esp], ecx
mov edx, ecx
je 0x4205d0
lea eax, [esp + 0x10]
jmp 0x4205d0
mov al, 1
mov dword [esp], eax
jmp 0x420057
mov edx, dword [esp + 0x58]
mov edi, dword [esp + 0x5c]
mov eax, edx
or eax, edi
je 0x420747
mov eax, dword [esp + 0x60]
mov ecx, eax
and ecx, 1
xor eax, 1
lea ebx, [eax + ecx*2]
test ebx, ebx
mov dword [esp], edx
jns 0x420703
mov eax, 0xffffffff
jmp 0x420706
mov eax, dword [esp + 0x2c]
lea edx, [esp + 0x70]
jmp 0x420664
lea ebx, [esp + 0x70]
mov edx, ebx
jmp 0x420a82
lea ebx, [esp + 0x70]
mov edx, ebx
mov eax, dword [esp]
test eax, eax
je 0x420a82
movzx edi, word [eax + 0x14]
mov ebx, edx
test di, di
je 0x420a82
lea ecx, [eax + 0x14]
mov dword [esp + 8], ecx
xor ecx, ecx
nop
nop
nop
nop
cmp di, 0x5c
je 0x42069a
movzx edi, word [eax + ecx + 0x16]
add ecx, 2
test di, di
jne 0x420680
mov ebx, edx
jmp 0x420a82
mov ebx, edx
test ecx, ecx
mov edi, dword [esp + 8]
je 0x420a7d
sar ecx, 1
mov eax, ecx
and eax, 3
je 0x420a17
mov ebx, edx
xor edx, edx
mov dword [esp + 0x104], eax
mov edi, dword [esp + 8]
movzx eax, word [edi]
mov word [esp], ax
xor eax, eax
cmp word [esp], 0
setne al
lea edi, [edi + eax*2]
mov eax, dword [esp + 0x104]
mov dword [esp + 8], edi
movzx edi, word [esp]
mov word [ebx], di
add ebx, 2
inc edx
cmp eax, edx
jne 0x4206c0
mov eax, ecx
sub eax, edx
lea edx, [esp + 0x70]
mov edi, dword [esp + 8]
jmp 0x420a1b
lea eax, [ebx + ebx]
push eax
call fcn.0040c4e0
add esp, 4
mov ecx, ebx
and ecx, 2
mov edx, ebx
or ebx, 2
imul ebx, ecx
xor ecx, 2
and edx, 0xfffffffd
imul edx, ecx
add ebx, edx
lea ecx, [esp + 0x30]
push 0
push 0
push ebx
mov dword [esp + 0x38], eax
push eax
push edi
push dword [esp + 0x14]
call fcn.0043dfe0
test eax, eax
jns 0x4204fb
lea edi, [esp + 0x70]
mov dword [esp + 0x10], 0x23bc2159
mov dword [esp + 0x14], 0x27b92547
mov dword [esp + 0x18], 0x5bc4593f
mov dword [esp + 0x1c], 0x5fca5dc5
mov dword [esp + 0x20], 0x535251cf
mov byte [esp + 0x24], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0xb8
xor cl, byte [esp + eax + 0x10]
add cl, 0x68
mov byte [esp + eax + 0x10], cl
inc eax
cmp eax, 0x15
jne 0x420780
movzx eax, word [esp + 0x10]
mov ebx, edi
test ax, ax
je 0x4207c1
lea ecx, [esp + 0x12]
mov ebx, edi
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 0x4207b0
mov word [ebx], 0
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
lea edi, [esi + eax]
add eax, esp
add eax, 0x70
mov dword [esp], edx
mov ecx, edx
mov edx, edi
shr ecx, 1
and ecx, 1
mov dword [esp + 8], eax
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
test bl, 1
je 0x42080f
mov eax, dword [esp]
and eax, 2
mov ecx, dword [esp + 8]
movzx ecx, byte [ecx + eax]
mov byte [edx + eax], cl
mov dword [esp + 0x10], 0xfbefed16
mov dword [esp + 0x14], 0xd12
mov eax, 0xcaaec2
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax - 0xcaaeb2]
mov edi, eax
and edi, 0xca22cf
xor edi, ecx
lea ecx, [edi - 0x67f4ddcb]
mov ebx, ecx
and ebx, 1
mov edx, ecx
and edx, 0xfe
xor ecx, 1
add ecx, edi
add ecx, 0x980b2235
sub ecx, edx
add ecx, ebx
mov byte [esp + eax - 0xcaaeb2], cl
inc eax
cmp eax, 0xcaaeca
jne 0x420830
mov ebx, dword [esp]
add esi, ebx
movzx eax, byte [esp + 0x10]
test al, al
je 0x42089d
lea ecx, [esp + 0x11]
mov edx, dword [ebp + 0x14]
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [esi], al
inc esi
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x420890
jmp 0x4208a0
mov edx, dword [ebp + 0x14]
mov byte [esi], 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 0x4208b0
sar eax, 1
sar ebx, 1
lea ecx, [ebx + eax]
add ecx, 0xa
test ecx, ecx
jns 0x4208d0
mov eax, 0xffffffff
jmp 0x4208d9
add ebx, eax
lea eax, [ebx*2 + 0x14]
push eax
call fcn.0040c4e0
add esp, 4
movzx ecx, word [edi]
mov ebx, eax
test cx, cx
je 0x420911
add edi, 2
mov ebx, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [ebx], cx
add ebx, 2
movzx ecx, word [edi]
add edi, 2
test cx, cx
jne 0x420900
mov word [ebx], 0x2f
mov dword [esp + 0x10], 0xf7a4f98b
mov dword [esp + 0x14], 0xf379f549
mov dword [esp + 0x18], 0xcf42f182
mov dword [esp + 0x1c], 0xcb46cd44
mov word [esp + 0x20], 0xc9c8
mov dword [esp + 0x22], 0
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, ecx
add dl, 0x56
xor dl, byte [esp + ecx + 0x10]
add dl, 0x52
mov byte [esp + ecx + 0x10], dl
inc ecx
cmp ecx, 0x16
jne 0x420950
add ebx, 2
movzx ecx, word [esp + 0x70]
test cx, cx
je 0x420991
lea edx, [esp + 0x72]
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [ebx], cx
add ebx, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x420980
mov word [ebx], 0
movzx ecx, word [esp + 0x10]
test cx, cx
mov dword [esp + 8], eax
je 0x4209c1
lea edx, [esp + 0x12]
nop
nop
nop
nop
nop
nop
nop
nop
mov word [ebx], cx
add ebx, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x4209b0
mov word [ebx], 0
mov ebx, 0xffffffff
push dword [esp + 0xc]
call fcn.00405550
add esp, 4
mov edi, eax
nop
nop
nop
nop
nop
nop
nop
cmp byte [edi + ebx + 1], 0
lea ebx, [ebx + 1]
jne 0x4209e0
mov ecx, dword [ebp + 8]
push ebx
push edi
mov ebx, dword [esp + 0x10]
push ebx
call fcn.0040ce10
mov dword [esp], eax
push edi
call fcn.004055e0
add esp, 4
push ebx
call fcn.0040c4f0
add esp, 4
lea ebx, [esp + 0x30]
jmp 0x420057
mov ebx, edx
mov eax, ecx
dec ecx
cmp ecx, 3
jb 0x420a7d
mov dword [esp], eax
movzx eax, word [edi]
xor ecx, ecx
test ax, ax
setne cl
mov word [ebx], ax
lea eax, [edi + ecx*2]
movzx ecx, word [edi + ecx*2]
xor edx, edx
test cx, cx
setne dl
mov word [ebx + 2], cx
lea ecx, [eax + edx*2]
movzx eax, word [eax + edx*2]
xor edx, edx
test ax, ax
setne dl
mov word [ebx + 4], ax
lea eax, [ecx + edx*2]
movzx ecx, word [ecx + edx*2]
xor edx, edx
test cx, cx
setne dl
lea edi, [eax + edx*2]
mov eax, dword [esp]
mov word [ebx + 6], cx
add ebx, 8
add eax, 0xfffffffc
jne 0x420a21
lea edx, [esp + 0x70]
mov word [ebx], 0
cmp byte [esp + 0x6f], 0
mov edi, edx
js 0x420a98
cmp edi, ebx
jne 0x4207c6
jmp 0x42074b
push dword [esp + 0x2c]
call fcn.0040c4f0
lea edi, [esp + 0x74]
add esp, 4
cmp edi, ebx
jne 0x4207c6
jmp 0x42074b
mov dword [esp + 4], 0
lea ecx, [esp + 0x30]
call fcn.0043d7e0
mov dword [esp + 0x140], 0x61faf1c5
mov byte [esp + 0x144], 0x74
mov dword [esp + 0x145], 0
mov byte [esp + 0x149], 0
xor eax, eax
xor edx, edx
mov dword [esp], edx
movzx ecx, byte [esp + eax + 0x140]
mov edi, edx
and edi, 0xc
mov edx, eax
xor edx, 0xc2b5b616
add edx, edi
mov ebx, edx
and ebx, ecx
mov edi, ebx
xor edx, ecx
mov ecx, ebx
lea edx, [edx + ebx*2]
and ebx, 0x3d
and edi, 2
or ecx, 2
imul ecx, edi
xor edi, 2
imul edi, ebx
add ecx, edi
mov edi, ecx
xor edi, edx
not ecx
and ecx, edx
mov edx, dword [esp]
add ecx, ecx
sub ecx, edi
add cl, 0x92
mov byte [esp + eax + 0x140], cl
inc eax
add edx, 2
cmp eax, 0xa
jne 0x420af0
movzx eax, byte [esp + 0x140]
test al, al
je 0x420b7d
lea ecx, [esp + 0x141]
mov edx, dword [ebp + 0xc]
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 0x420b70
jmp 0x420b80
mov edx, dword [ebp + 0xc]
mov byte [esi], 0
mov dword [edx], esi
mov eax, dword [esp + 4]
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 4]
and cl, 1
mov dword [esp + 4], ecx
test eax, eax
je 0x420abd
cmp eax, dword [esp + 0x48]
je 0x420abd
push eax
call fcn.0040c4f0
add esp, 4
mov dword [esp + 0x44], 0
jmp 0x420abd