Function at 0x420bf5
Capabilities:
Encode data using xor

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], 0x219a8b85
mov byte [esp + 0x144], 0x14
mov dword [esp + 0x145], 0
mov byte [esp + 0x149], 0
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, ecx
add dl, 0x46
xor dl, byte [esp + ecx + 0x140]
add dl, 0xa2
mov byte [esp + ecx + 0x140], dl
inc ecx
cmp ecx, 0xa
jne 0x420260
mov esi, dword [esi]
movzx ecx, byte [esp + 0x140]
test cl, cl
je 0x4202ab
lea edx, [esp + 0x141]
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 0x4202a0
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.004225b0
add esp, 0x18
test al, al
mov dword [esp], esi
je 0x42039d
mov dword [esp + 0x140], 0xcf17656c
mov byte [esp + 0x144], 0xf8
mov dword [esp + 0x145], 0
mov dword [esp + 0x148], 0
lea eax, [esp + 0x140]
mov ecx, 0x69121ad4
mov edx, 0xb
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [eax]
mov ebx, esi
not ebx
mov edi, ebx
or ebx, 0x1f
add ebx, esi
inc ebx
and edi, 0xe0
or ebx, edi
mov esi, ecx
and esi, 0x60
add esi, edx
xor ebx, esi
add bl, 0xa9
mov byte [eax], bl
inc eax
dec ecx
inc edx
cmp ecx, 0x69121ac8
jne 0x420340
movzx eax, byte [esp + 0x140]
test al, al
je 0x4203aa
lea ecx, [esp + 0x141]
mov edx, dword [esp]
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 0x420390
jmp 0x4203ad
mov dword [esp + 8], 0
jmp 0x4214de
mov edx, dword [esp]
mov dword [esp], edx
mov byte [edx], 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 + 0x58], 0xba4ebe7b
mov dword [esp + 0x5c], 0x5b5ab964
mov dword [esp + 0x60], 0x91922b7
mov dword [esp + 0x64], 0x14171611
mov dword [esp + 0x68], 0x2a210fc4
mov dword [esp + 0x6c], 0x1b122826
mov dword [esp + 0x70], 0x3021d
mov dword [esp + 0x74], 0x1f2b2e
mov dword [esp + 0x78], 0x2205d209
mov dword [esp + 0x7c], 0xd4d43601
mov dword [esp + 0x80], 0xe271808
mov dword [esp + 0x84], 0x21040fea
mov dword [esp + 0x88], 0x201ee224
mov dword [esp + 0x8c], 0xe8eb2a22
mov dword [esp + 0x90], 0xf9273ae5
mov dword [esp + 0x94], 0x24272621
mov dword [esp + 0x98], 0xfa0d0f09
mov dword [esp + 0x9c], 0x2c3b102f
mov dword [esp + 0xa0], 0xd0d9f71c
mov dword [esp + 0xa4], 0xcfd7d6d1
mov dword [esp + 0xa8], 0xd8dbdada
mov dword [esp + 0xac], 0x2e9c6d9
mov dword [esp + 0xb0], 0xd5d2f6c6
mov dword [esp + 0xb4], 0xf3d6f7f2
mov dword [esp + 0xb8], 0xc8cbcac5
mov dword [esp + 0xbc], 0xeaded6e5
mov dword [esp + 0xc0], 0xdff522cd
mov dword [esp + 0xc4], 0xf4e3d0e9
mov dword [esp + 0xc8], 0xf8fbfaf5
mov dword [esp + 0xcc], 0xf0fffef9
mov dword [esp + 0xd0], 0xe63136e9
mov dword [esp + 0xd4], 0xe4e7e6e1
mov dword [esp + 0xd8], 0xcddfcc37
mov dword [esp + 0xdc], 0xf9c2fae9
mov byte [esp + 0xe0], 0xac
mov byte [esp + 0xe3], 0
mov word [esp + 0xe1], 0
xor eax, eax
lea ebx, [esp + 0x30]
nop
nop
nop
nop
movzx edx, byte [esp + eax + 0x58]
lea ecx, [eax + 0x3efa4fb7]
mov esi, 0x105b048
sub esi, eax
and esi, 0x10082b0
and ecx, 0x26d25d4f
or ecx, esi
xor ecx, edx
lea edi, [ecx + ecx]
mov esi, 1
sub esi, ecx
xor ecx, 0x4f
mov edx, 2
sub edx, edi
not edx
and edx, 2
add ecx, 0x94
and esi, 1
and ecx, 0xfe
or ecx, esi
xor ecx, 0xfe
add ecx, edx
mov byte [esp + eax + 0x58], cl
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
cmp eax, 0x8c
jb 0x420550
mov dword [esp + 0x140], 0xb4726266
mov dword [esp + 0x144], 0xecb11fdc
mov dword [esp + 0x148], 0xd9f0b47c
mov dword [esp + 0x14c], 0xbdbebfc0
mov dword [esp + 0x150], 0x4136bac7
mov dword [esp + 0x154], 0xadb9c000
mov dword [esp + 0x158], 0xb1b2b3b4
mov dword [esp + 0x15c], 0x15bed808
mov dword [esp + 0x160], 0x87297d1
mov dword [esp + 0x164], 0x91929a0a
mov dword [esp + 0x168], 0x95969790
mov dword [esp + 0x16c], 0xa9aaab94
mov dword [esp + 0x170], 0xe4223236
mov dword [esp + 0x174], 0xe22e5f8c
mov dword [esp + 0x178], 0x6ae72ba6
mov dword [esp + 0x17c], 0x8d8e8f90
mov dword [esp + 0x180], 0x31aa4434
mov dword [esp + 0x184], 0x855a3bff
mov dword [esp + 0x188], 0x8105f03c
mov dword [esp + 0x18c], 0xa57e7f80
mov dword [esp + 0x190], 0x797a7b64
mov dword [esp + 0x194], 0xcf03cf78
mov dword [esp + 0x198], 0xc307cb94
mov dword [esp + 0x19c], 0x71bd7a8
mov dword [esp + 0x1a0], 0x696a6b6c
mov dword [esp + 0x1a4], 0xb9da14dc
mov dword [esp + 0x1a8], 0x9115d464
mov dword [esp + 0x1ac], 0x5d2466d8
mov dword [esp + 0x1b0], 0x595a5b5c
mov dword [esp + 0x1b4], 0xed565758
mov dword [esp + 0x1b8], 0xba535523
mov dword [esp + 0x1bc], 0x4d4e4f50
mov dword [esp + 0x1c0], 0x95fe3ef4
mov dword [esp + 0x1c4], 0x5a89ff48
mov byte [esp + 0x1c8], 0x44
mov dword [esp + 0x1c9], 0
lea eax, [esp + 0x140]
mov ecx, 0xcc
nop
movzx esi, byte [eax]
lea edx, [ecx - 0x5a1ae200]
or edx, esi
and esi, ecx
not edx
or edx, esi
mov esi, 0xff
sub esi, edx
or esi, 1
mov edi, edx
and edi, 1
add edx, edx
sub edx, edi
add edx, esi
add dl, 2
mov byte [eax], dl
inc eax
dec ecx
cmp ecx, 0x3f
jne 0x420750
lea eax, [esp + 0x58]
lea edx, [esp + 0x140]
lea ecx, [esp + 0x130]
push eax
push 0x88
push edx
push ebx
call fcn.0043f5e0
mov dword [esp + 0x12c], edx
mov dword [esp + 0x128], eax
or eax, edx
je 0x42087d
mov dword [esp + 0x140], 0xf1585dac
mov byte [esp + 0x144], 0xcc
mov dword [esp + 0x145], 0
mov word [esp + 0x149], 0
mov eax, 0xab7184d2
mov ecx, 0x548e7b2d
nop
nop
nop
nop
nop
nop
nop
mov edx, ecx
xor edx, 0x1406132e
mov esi, ecx
or esi, 0x40886811
and esi, edx
mov edi, eax
xor edi, 0xeac86811
mov edx, eax
or edx, 0x13184ee
and edx, edi
movzx ebx, byte [esp + eax + 0x548e7c6e]
or edx, esi
mov esi, ebx
not esi
and esi, 0x11
xor ebx, 0xeac86811
or ebx, esi
mov esi, ebx
and esi, edx
add esi, esi
sub edx, esi
add edx, ebx
mov esi, edx
xor esi, 0x1b
and edx, 0x64
add edx, edx
sub edx, esi
inc dl
mov byte [esp + eax + 0x548e7c6e], dl
inc eax
dec ecx
cmp eax, 0xab7184dd
jne 0x4207f0
movzx eax, byte [esp + 0x140]
test al, al
je 0x420887
lea ecx, [esp + 0x141]
mov esi, dword [esp]
lea edx, [esp + 0x30]
nop
mov byte [esi], al
inc esi
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x420870
jmp 0x42088e
xor ecx, ecx
mov esi, dword [esp]
jmp 0x4214d7
mov esi, dword [esp]
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.0043f5e0
mov dword [esp + 0x124], edx
mov dword [esp + 0x120], eax
xor ecx, ecx
or eax, edx
je 0x4214d7
mov dword [esp], esi
mov dword [esp + 0x140], 0xeb38380e
mov byte [esp + 0x144], 0x90
mov dword [esp + 0x145], 0
mov word [esp + 0x149], 0
xor eax, eax
nop
movzx edx, byte [esp + eax + 0x140]
mov esi, ecx
and esi, 0xa
mov ebx, ecx
mov ecx, eax
xor ecx, 0x53f00a25
add ecx, esi
mov esi, edx
mov edi, ecx
xor edi, 0xd4
xor edx, 0x2b
and edx, edi
xor esi, 0x14
xor ecx, 0x2b
and ecx, esi
or ecx, edx
add cl, 0x47
mov byte [esp + eax + 0x140], cl
mov ecx, ebx
inc eax
add ecx, 2
cmp eax, 0xb
jne 0x4208f0
movzx eax, byte [esp + 0x140]
test al, al
je 0x42095d
lea ecx, [esp + 0x141]
mov esi, dword [esp]
nop
nop
nop
mov byte [esi], al
inc esi
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x420950
jmp 0x420960
mov esi, dword [esp]
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.0043eb60
mov eax, dword [esp + 0x44]
xor ecx, ecx
cmp eax, dword [esp + 0x48]
je 0x4214d7
mov dword [esp + 0x140], 0x81221de9
mov byte [esp + 0x144], 0xb4
mov word [esp + 0x145], 0
mov byte [esp + 0x147], 0
mov eax, 0xffffffff
xor edi, edi
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
or ecx, 0x1e
add ecx, edi
mov edx, edi
xor edx, 0x1e
lea ecx, [edx + ecx*2]
add cl, 2
xor cl, byte [esp + edi + 0x140]
add cl, 0x6a
mov byte [esp + edi + 0x140], cl
lea ecx, [edi + 1]
dec eax
mov edi, ecx
cmp ecx, 8
jne 0x4209c0
movzx eax, byte [esp + 0x140]
test al, al
je 0x420a1b
lea ecx, [esp + 0x141]
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 0x420a10
mov byte [esi], 0
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x104], ecx
cmp eax, ecx
je 0x4214d5
xor ecx, ecx
lea edi, [esp + 0x30]
jmp 0x420a5b
mov ecx, dword [esp + 8]
mov eax, dword [esp + 0x108]
add eax, 8
cmp eax, dword [esp + 0x104]
je 0x4214ad
mov dword [esp + 8], ecx
mov ecx, dword [eax]
mov dword [esp + 0xc], ecx
mov dword [esp + 0x108], eax
mov eax, dword [eax + 4]
mov dword [esp + 0x10c], eax
push 0x198
push 0
lea eax, [esp + 0x148]
push eax
call fcn.0040c8d0
add esp, 0xc
xor ebx, ebx
jmp 0x420aad
mov esi, dword [esp]
inc ebx
cmp ebx, 0xb
je 0x420cf0
mov ecx, edi
push 0
push 0
push 0x198
lea eax, [esp + 0x14c]
push eax
push dword [esp + 0x11c]
push dword [esp + 0x20]
call fcn.0043e9e0
test eax, eax
js 0x420aa3
cmp byte [esp + 0x210], 0
sete al
xor al, 0x31
cmp byte [esp + 0x211], 0
mov byte [esp + 0xe8], al
sete cl
xor cl, 0x31
mov byte [esp + 0xe9], cl
cmp byte [esp + 0x212], 0
sete cl
xor cl, 0x31
mov byte [esp + 0xea], cl
cmp byte [esp + 0x2d0], 0
sete cl
xor cl, 0x31
mov byte [esp + 0xeb], cl
mov word [esp + 0xec], 0xa
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [esi + ecx], al
movzx eax, byte [esp + ecx + 0xe9]
inc ecx
test al, al
jne 0x420b40
mov byte [esi + ecx], 0
movzx eax, byte [esp + 0x212]
test al, al
jne 0x420d10
mov edx, dword [esp + 0x184]
or edx, dword [esp + 0x180]
je 0x420d10
mov dword [esp + 4], ebx
add esi, ecx
mov dword [esp], esi
mov dword [esp + 0x58], 0x4fed14e5
mov byte [esp + 0x5c], pe_nt_image_headers32
lea eax, [esp + 0x5d]
mov byte [eax + 4], 0
mov dword [eax], 0
mov eax, 0xeb
mov ecx, 0x14
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + eax - 0x93]
mov edx, edi
not edx
lea ebx, [edx + edx]
mov esi, ecx
and esi, edx
shl edx, 8
sub edx, ebx
sub edx, edi
add edx, 0xfe
and edx, eax
or edx, esi
mov bl, 0x68
sub bl, dl
mov byte [esp + eax - 0x93], bl
inc eax
dec ecx
cmp eax, 0xf5
jne 0x420bb0
movzx eax, byte [esp + 0x58]
test al, al
je 0x420c10
lea ecx, [esp + 0x59]
mov edx, dword [esp]
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], al
inc edx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x420c00
jmp 0x420c13
mov edx, dword [esp]
mov dword [esp], edx
mov byte [edx], 0
mov dword [esp + 0x14], 0xffffffff
mov dword [esp + 0x10], 0xff676980
mov dword [esp + 0x58], 0x585b5a45
mov byte [esp + 0x5c], 0
mov eax, 0xffffffff
xor ecx, ecx
xor edi, edi
nop
mov dword [esp + 0x2c], ecx
movzx ebx, byte [esp + edi + 0x58]
mov edx, edi
xor edx, 0xb038c6f
lea ecx, [eax + edx]
inc ecx
and ecx, ebx
add ecx, ecx
mov esi, ecx
sub esi, edx
sub edx, ecx
mov ecx, dword [esp + 0x2c]
add esi, ecx
xor esi, ebx
add edx, eax
and edx, ebx
add edx, edx
sub edx, esi
mov ebx, edx
and ebx, 0x54
add ebx, ebx
xor edx, 0x2b
sub ebx, edx
mov byte [esp + edi + 0x58], bl
inc edi
add eax, 2
add ecx, 0xfffffffe
cmp edi, 5
jne 0x420c40
mov eax, dword [0x450e9c]
test eax, eax
lea edi, [esp + 0x30]
mov ebx, dword [esp + 4]
je 0x420aa0
mov ecx, dword [esp + 0x58]
xor edx, edx
mov esi, dword [0x450ea0]
nop
nop
nop
nop
cmp dword [esi + edx*8], 0xf8fd61b8
je 0x420cc3
inc edx
cmp eax, edx
jne 0x420cb0
jmp 0x420aa0
mov eax, dword [esi + edx*8 + 4]
cmp eax, ecx
je 0x420aa0
lea ecx, [esp + 0x10]
push ecx
push 0
push 2
push dword [0x450ea4]
push eax
call fcn.00441230
add esp, 0x14
jmp 0x420aa0
movzx eax, byte [esp + 0x212]
test al, al
jne 0x420d1a
jmp 0x420a40
add esi, ecx
test al, al
je 0x420a40
call fcn.00404ae0
mov dword [esp + 0x2c], eax
push eax
call fcn.00404700
add esp, 4
mov dword [esp], eax
mov dword [esp + 0x58], 0x912b2f31
mov byte [esp + 0x5c], 0x8c
lea eax, [esp + 0x5d]
mov byte [eax + 2], 0
mov word [eax], 0
mov eax, 0x1b5507e2
nop
nop
movzx ecx, byte [esp + eax - 0x1b55078a]
mov edx, ecx
and edx, eax
add dl, dl
sub cl, dl
movzx ecx, cl
add ecx, eax
add cl, 0x96
mov byte [esp + eax - 0x1b55078a], cl
inc eax
cmp eax, 0x1b5507ea
jne 0x420d50
movzx eax, byte [esp + 0x58]
test al, al
je 0x420d9b
lea ecx, [esp + 0x59]
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 0x420d90
mov byte [esi], 0
mov eax, dword [esp + 0x178]
mov edx, dword [esp + 0x17c]
xor ebx, ebx
mov ecx, eax
or ecx, edx
je 0x420de0
mov ecx, edi
push 0
push 0
push 0x40
lea edi, [esp + 0x64]
push edi
push edx
push eax
call fcn.0043e9e0
test eax, eax
js 0x420de4
lea ecx, [esp + 0x30]
mov edx, edi
push dword [esp]
call fcn.00422f00
add esp, 4
jmp 0x420de6
xor eax, eax
jmp 0x420dea
xor eax, eax
lea edi, [esp + 0x30]
mov dword [esp + 0x58], 0xdba0a8a7
mov byte [esp + 0x5c], 0xd0
lea ecx, [esp + 0x5d]
mov byte [ecx + 4], 0
mov dword [ecx], 0
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, ebx
and edx, 3
xor edx, 0xb3
mov ecx, ebx
and ecx, 0xc
sub ecx, edx
xor cl, byte [esp + ebx + 0x58]
add cl, 0x7f
mov byte [esp + ebx + 0x58], cl
inc ebx
cmp ebx, 0xa
jne 0x420e10
movzx ecx, byte [esp + 0x58]
test cl, cl
je 0x420e4b
lea edx, [esp + 0x59]
mov byte [esi], cl
inc esi
movzx ecx, byte [edx]
inc edx
test cl, cl
jne 0x420e40
mov byte [esi], 0
test al, al
je 0x420fe0
push dword [esp]
call fcn.004048e0
add esp, 4
test eax, eax
je 0x420fe7
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.0043e9e0
test eax, eax
mov dword [esp], esi
js 0x42119f
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.0043e9e0
test eax, eax
js 0x42119f
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.0043e9e0
test eax, eax
js 0x42119f
cmp byte [esp + 0xff], 0
lea eax, [esp + 0xe8]
mov dword [esp + 4], eax
js 0x420fee
mov dword [esp + 0x10], 0xe91feb3f
mov dword [esp + 0x14], 0xed18ef03
mov dword [esp + 0x18], 0xf136f3cc
mov dword [esp + 0x1c], 0xf502f717
mov dword [esp + 0x20], 0xf926fb13
mov word [esp + 0x24], 0xfff8
lea eax, [esp + 0x26]
mov word [eax + 4], 0
mov dword [eax], 0
xor eax, eax
xor ecx, ecx
lea edx, [esp + 0x10]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov esi, eax
and esi, 0xb2
mov ebx, ecx
xor ebx, 0xa6
sub ebx, esi
inc bl
xor bl, byte [edx]
add bl, 0xbd
mov byte [edx], bl
inc edx
dec ecx
add eax, 0xfffffffe
cmp ecx, 0xffffffe4
jne 0x420f70
movzx edi, word [esp + 0x10]
test di, di
je 0x421024
lea eax, [esp + 0x10]
mov edx, dword [esp + 4]
mov ecx, edx
jmp 0x420fb8
movzx edi, word [eax]
test di, di
je 0x421036
movzx esi, word [ecx]
test si, si
je 0x42102d
add ecx, 2
add eax, 2
lea ebx, [edx + 2]
cmp si, di
je 0x420fd2
mov edx, ebx
mov ecx, ebx
je 0x420fb0
lea eax, [esp + 0x10]
jmp 0x420fb0
xor ebx, ebx
jmp 0x421493
mov bl, 1
jmp 0x421493
mov esi, dword [esp + 0xe8]
mov ecx, dword [esp + 0xec]
mov eax, esi
or eax, ecx
je 0x42119f
mov edi, dword [esp + 0xf0]
mov ebx, edi
inc ebx
mov dword [esp + 0xc], ecx
jns 0x4210c3
mov eax, 0xffffffff
jmp 0x4210ca
mov edx, dword [esp + 4]
mov esi, dword [esp]
jmp 0x421045
lea ebx, [esp + 0x58]
jmp 0x42117a
lea ebx, [esp + 0x58]
test edx, edx
mov esi, dword [esp]
je 0x42117d
movzx edi, word [edx + 0x14]
lea ebx, [esp + 0x58]
test di, di
je 0x42117d
lea eax, [edx + 0x14]
xor ecx, ecx
nop
nop
nop
nop
nop
cmp di, 0x5c
je 0x42107c
movzx edi, word [edx + ecx + 0x16]
add ecx, 2
test di, di
jne 0x421060
lea ebx, [esp + 0x58]
jmp 0x42117d
lea ebx, [esp + 0x58]
test ecx, ecx
je 0x421175
sar ecx, 1
mov edx, ecx
and edx, 3
je 0x421117
xor edi, edi
lea ebx, [esp + 0x58]
mov dword [esp + 0xc], edx
nop
movzx esi, word [eax]
xor edx, edx
test si, si
setne dl
lea eax, [eax + edx*2]
mov edx, dword [esp + 0xc]
mov word [ebx], si
add ebx, 2
inc edi
cmp edx, edi
jne 0x4210a0
mov esi, ecx
sub esi, edi
jmp 0x42111d
lea eax, [edi*2 + 2]
push eax
call fcn.0040c820
add esp, 4
mov edx, 2
sub edx, edi
and edx, 2
mov ecx, ebx
and ecx, 0xfffffffd
imul ecx, edx
mov edx, ebx
and edx, 2
or ebx, 2
imul ebx, edx
add ebx, ecx
lea ecx, [esp + 0x30]
push 0
push 0
push ebx
mov dword [esp + 0x10], eax
push eax
push dword [esp + 0x1c]
push esi
call fcn.0043e9e0
test eax, eax
jns 0x420f1e
jmp 0x42119f
lea ebx, [esp + 0x58]
mov esi, ecx
dec ecx
cmp ecx, 3
jb 0x421175
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 0x421123
mov word [ebx], 0
mov esi, dword [esp]
cmp byte [esp + 0xff], 0
jns 0x421193
push dword [esp + 4]
call fcn.0040c830
add esp, 4
lea eax, [esp + 0x58]
cmp eax, ebx
jne 0x421259
mov dword [esp + 0x10], 0xb1608f47
mov dword [esp + 0x14], 0xb523b355
mov dword [esp + 0x18], 0xb958b75d
mov dword [esp + 0x1c], 0xbd2ebb53
mov dword [esp + 0x20], 0xa1bebf2d
mov byte [esp + 0x24], 0
mov eax, 0x3e9e17a2
lea ecx, [esp + 0x10]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [ecx]
mov edx, eax
or edx, esi
lea edi, [eax - 0x3e9e1700]
and edi, esi
not edx
or edx, edi
mov esi, edx
xor esi, 0x9dd7cdfe
and edx, 0xe2283201
add edx, edx
sub edx, esi
add edx, 0x3916762e
mov esi, edx
and esi, 0x7e
xor edx, 0xfe
lea edx, [edx + esi*2]
inc dl
mov byte [ecx], dl
inc ecx
dec eax
cmp eax, 0x3e9e178d
jne 0x4211e0
movzx eax, word [esp + 0x10]
lea edx, [esp + 0x58]
mov ebx, edx
test ax, ax
je 0x421251
lea ecx, [esp + 0x12]
mov ebx, edx
nop
nop
nop
nop
mov word [ebx], ax
add ebx, 2
movzx eax, word [ecx]
add ecx, 2
test ax, ax
jne 0x421240
mov word [ebx], 0
mov esi, dword [esp]
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 + 4], edi
xchg esi, esi
rep movsw word es:[edi], word [esi]
xchg esi, esi
test bl, 1
je 0x4212a2
mov ecx, edx
and ecx, 2
movzx eax, byte [eax + ecx]
mov esi, dword [esp + 4]
mov byte [esi + ecx], al
mov dword [esp + 0x10], 0x455d5be6
mov word [esp + 0x14], 0xf3ea
mov dword [esp + 0x16], 0
xor eax, eax
mov edi, dword [ebp + 0x14]
nop
nop
mov ecx, eax
add cl, 0x55
xor cl, byte [esp + eax + 0x10]
add cl, 0x57
mov byte [esp + eax + 0x10], cl
inc eax
cmp eax, 0xa
jne 0x4212c0
mov esi, dword [esp]
add esi, edx
movzx eax, byte [esp + 0x10]
test al, al
je 0x4212fb
lea ecx, [esp + 0x11]
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [esi], al
inc esi
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x4212f0
mov byte [esi], 0
mov ebx, dword [edi]
mov eax, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [ebx + eax + 2], 0
lea eax, [eax + 2]
jne 0x421310
sar eax, 1
sar edx, 1
lea ecx, [edx + eax]
add ecx, 0xa
test ecx, ecx
jns 0x421330
mov eax, 0xffffffff
jmp 0x421339
add edx, eax
lea eax, [edx*2 + 0x14]
mov dword [esp], esi
push eax
call fcn.0040c820
add esp, 4
movzx ecx, word [ebx]
mov edi, eax
test cx, cx
je 0x421371
add ebx, 2
mov edi, eax
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 0x421360
mov dword [esp + 4], eax
mov word [edi], 0x2f
mov dword [esp + 0x10], 0xd704c93b
mov dword [esp + 0x14], 0xd369d579
mov dword [esp + 0x18], 0xdf62d122
mov dword [esp + 0x1c], 0xdb66dd64
mov word [esp + 0x20], 0xd9d8
lea ecx, [esp + 0x26]
mov word [ecx], 0
mov dword [ecx - 4], 0
mov ecx, 0xe
mov edx, 0x51
nop
nop
nop
nop
nop
mov esi, edx
and esi, 0x71
mov ebx, ecx
and ebx, 0xe
or ebx, esi
xor bl, byte [esp + ecx + 2]
xor bl, 0xf1
add bl, 0x9a
mov byte [esp + ecx + 2], bl
inc ecx
dec edx
cmp ecx, 0x26
jne 0x4213c0
add edi, 2
movzx ecx, word [esp + 0x58]
test cx, cx
je 0x421413
lea edx, [esp + 0x5a]
mov ebx, dword [ebp + 8]
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 0x421400
jmp 0x421416
mov ebx, dword [ebp + 8]
mov word [edi], 0
movzx ecx, word [esp + 0x10]
test cx, cx
je 0x421441
lea edx, [esp + 0x12]
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 0x421430
mov word [edi], 0
mov esi, 0xffffffff
push dword [esp + 0x2c]
call fcn.004056f0
add esp, 4
mov edi, eax
nop
nop
nop
nop
nop
nop
nop
cmp byte [edi + esi + 1], 0
lea esi, [esi + 1]
jne 0x421460
mov ecx, ebx
push esi
push edi
mov esi, dword [esp + 0xc]
push esi
call fcn.0040d190
mov ebx, eax
push edi
call fcn.00405780
add esp, 4
push esi
call fcn.0040c830
add esp, 4
mov esi, dword [esp]
lea edi, [esp + 0x30]
push dword [esp + 0x2c]
call fcn.00404920
add esp, 4
mov ecx, dword [esp + 8]
and cl, 1
or cl, bl
jmp 0x420a44
mov eax, dword [esp + 0x44]
and cl, 1
test eax, eax
je 0x4214d7
cmp eax, dword [esp + 0x48]
je 0x4214d7
push eax
mov edi, ecx
call fcn.0040c830
mov ecx, edi
add esp, 4
mov dword [esp + 0x44], 0
jmp 0x4214d7
xor ecx, ecx
mov dword [esp + 8], ecx
mov dword [esp], esi
lea ecx, [esp + 0x30]
call fcn.0043e1c0
mov dword [esp + 0x140], 0xf15a41ad
mov byte [esp + 0x144], 0xcc
mov dword [esp + 0x145], 0
mov word [esp + 0x149], 0
mov eax, 0xf418ead2
mov ecx, 0xbe7152d
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + eax + 0xbe7166e]
mov edi, ecx
and edi, 0x881140b
mov edx, eax
and edx, 0xc018a234
or edx, edi
xor edx, esi
mov esi, edx
xor esi, 0xcb
mov ebx, edx
xor ebx, 0x24
and edx, 0xe5
xor edx, 0xc1
or ebx, 0x1a
add ebx, esi
add ebx, edx
add bl, 0xe7
mov byte [esp + eax + 0xbe7166e], bl
inc eax
dec ecx
cmp eax, 0xf418eadd
jne 0x421520
movzx eax, byte [esp + 0x140]
test al, al
je 0x42159d
lea ecx, [esp + 0x141]
mov edx, dword [ebp + 0xc]
mov esi, dword [esp]
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [esi], al
inc esi
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x421590
jmp 0x4215a3
mov edx, dword [ebp + 0xc]
mov esi, dword [esp]
mov byte [esi], 0
mov dword [edx], esi
mov eax, dword [esp + 8]
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret