Function at 0x4209d7
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x4c
push ebx
push edi
push 0x14
mov ebx, ecx
mov ecx, dword [ebp + 8]
push 0x50fdd4
xor edi, edi
mov byte [ebp - 1], 0
call fcn.0040b3e4
cmp eax, edi
jne 0x420a01
xor al, al
jmp 0x421fe1
cmp byte [ebp + 0xc], 0
push esi
je 0x420a15
push 5
pop ecx
mov esi, eax
mov edi, ebx
rep movsd dword es:[edi], dword [esi]
xor edi, edi
jmp 0x420a25
push eax
mov ecx, ebx
call fcn.004ba452
test al, al
jne 0x420a25
mov byte [ebp - 1], 1
mov ecx, dword [ebp + 8]
push edi
push edi
push 0x511214
call fcn.0040b3c9
mov ecx, 0x517834
cmp eax, edi
je 0x420a3f
mov ecx, eax
call fcn.0042876e
mov ecx, dword [ebp + 8]
push edi
push 0x51210c
mov dword [ebp - 0xc], eax
call fcn.0040b40a
test eax, eax
je 0x420a6f
mov ecx, dword [ebp - 0xc]
mov esi, ecx
call fcn.0049a515
mov dl, 1
mov ecx, esi
mov dword [ebp - 0xc], eax
call fcn.00479b79
cmp byte [ebp + 0xc], 0
push dword [ebp - 0xc]
mov ecx, dword [ebx + 0x168]
je 0x420a85
call fcn.0044a344
jmp 0x420a8a
call fcn.0044af50
push edi
push 0x1000
mov ecx, ebx
call fcn.0040f0bd
lea ecx, [ebp - 0xc]
call fcn.004a0cb3
mov esi, dword [ebp + 8]
push edi
push edi
push 0x5120dc
mov ecx, esi
call fcn.0040b429
push edi
push edi
push 0x511b14
mov ecx, esi
mov dword [ebx + 0x300], eax
mov dword [ebx + 0x304], edx
call fcn.0040b429
push edi
push edi
push 0x5120d4
mov ecx, esi
mov dword [ebx + 0x308], eax
mov dword [ebx + 0x30c], edx
call fcn.0040b429
push edi
push 0x512084
mov ecx, esi
mov dword [ebx + 0x310], eax
mov dword [ebx + 0x314], edx
call fcn.0040b40a
push edi
push 0x51207c
mov ecx, esi
mov byte [ebx + 0x1d0], al
call fcn.0040b40a
cmp eax, edi
setne al
shl al, 2
xor al, byte [ebx + 0x1cb]
push 1
and al, 4
xor byte [ebx + 0x1cb], al
push 0x512074
mov ecx, esi
call fcn.0040b40a
mov ecx, dword [ebp + 8]
lea esi, [ebx + 0x4d8]
push dword [esi]
mov byte [ebx + 0x1d1], al
push 0x511834
call fcn.0040b40a
mov ecx, dword [ebp + 8]
push edi
push 0x51206c
mov dword [esi], eax
call fcn.0040b40a
cmp eax, edi
lea ecx, [ebx + 0x1dc]
mov dword [ecx], eax
jge 0x420b73
mov dword [ecx], 1
jmp 0x420b7c
push 5
pop edx
cmp eax, edx
jle 0x420b7c
mov dword [ecx], edx
mov ecx, dword [ebp + 8]
push 0x512064
call fcn.0040ba1a
mov dword [ebp - 0x2c], eax
cmp eax, edi
je 0x420bc2
cmp dword [eax + 8], 5
jne 0x420bc2
lea esi, [ebx + 0x1e0]
mov dword [ebp - 0x10], edi
mov dword [ebp - 0x18], esi
mov ecx, dword [ebp - 0x2c]
push edi
push dword [ebp - 0x10]
call fcn.0040b327
mov ecx, dword [ebp - 0x18]
inc dword [ebp - 0x10]
add dword [ebp - 0x18], 4
cmp dword [ebp - 0x10], 5
mov dword [ecx], eax
jl 0x420ba2
jmp 0x420bd1
xor eax, eax
lea esi, [ebx + 0x1e0]
mov edi, esi
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
mov ecx, dword [ebp + 8]
xor edi, edi
push edi
push 0x51205c
call fcn.0040b40a
mov ecx, dword [ebp + 8]
cmp eax, edi
setne al
xor al, byte [ebx + 0x1cc]
and al, 1
xor byte [ebx + 0x1cc], al
movzx eax, byte [ebx + 0x1cc]
and eax, 1
push eax
push 0x512050
call fcn.0040b40a
mov ecx, dword [ebp + 8]
cmp eax, edi
setne al
xor al, byte [ebx + 0x1cd]
push 1
and al, 1
xor byte [ebx + 0x1cd], al
push 0x512048
call fcn.0040b40a
mov ecx, dword [ebp + 8]
cmp eax, edi
setne al
add al, al
xor al, byte [ebx + 0x1cc]
push edi
and al, 2
xor byte [ebx + 0x1cc], al
push 0x5120b8
call fcn.0040b40a
cdq
mov dword [ebx + 0x1a8], eax
mov dword [ebp - 0x4c], edi
mov dword [ebp - 0x48], edi
mov dword [ebp - 0x44], edi
mov dword [ebp - 0x40], edi
mov dword [ebp - 0x3c], edi
push 5
pop ecx
lea edi, [ebp - 0x4c]
xor eax, eax
mov dword [ebx + 0x1ac], edx
repe cmpsd dword [esi], dword es:[edi]
jne 0x420cb3
call sub.msvcrt.dll_rand
cdq
mov ecx, 0xc8
idiv ecx
push 0
pop esi
mov eax, edx
cdq
mov edi, eax
sub edi, 0xe10
sbb edx, esi
xor ecx, ecx
mov dword [ebp - 0x34], edx
call fcn.0047a82b
add eax, edi
adc edx, dword [ebp - 0x34]
mov dword [ebx + 0x1f4], eax
mov dword [ebx + 0x1f8], edx
jmp 0x420cb5
xor esi, esi
mov edi, dword [ebp + 8]
push esi
push esi
push 0x511e20
mov ecx, edi
call fcn.0040b3c9
cmp eax, esi
je 0x420cd6
mov ecx, dword [ebx + 0x168]
push eax
call fcn.00449856
push esi
push 0x511dd8
mov ecx, edi
call fcn.0040b398
cmp eax, esi
je 0x420cf4
mov ecx, eax
call fcn.0042897a
mov dword [ebx + 0x474], eax
push esi
push 0x511e04
mov ecx, edi
call fcn.0040b398
cmp eax, esi
je 0x420d12
mov ecx, eax
call fcn.0042897a
mov dword [ebx + 0x470], eax
push esi
push esi
push 0x511e14
mov ecx, edi
call fcn.0040b3c9
cmp eax, esi
je 0x420d31
mov ecx, eax
call fcn.0042876e
mov dword [ebx + 0x488], eax
push esi
push esi
push 0x511df8
mov ecx, edi
call fcn.0040b3c9
cmp eax, esi
je 0x420d50
cmp word [eax], si
je 0x420d50
push eax
mov ecx, ebx
call fcn.0041092a
push esi
push esi
push 0x511dec
mov ecx, edi
call fcn.0040b3c9
cmp eax, esi
je 0x420d74
cmp word [eax], si
je 0x420d74
mov ecx, eax
call fcn.0042876e
mov dword [ebx + 0x480], eax
push esi
push 0x511de4
mov ecx, edi
call fcn.0040b398
cmp eax, esi
je 0x420d97
cmp byte [eax], 0
je 0x420d97
mov ecx, eax
call fcn.0042897a
mov dword [ebx + 0x484], eax
push esi
push 0x511dd0
mov ecx, edi
call fcn.0040b40a
push esi
push 0x511dc8
mov ecx, edi
mov dword [ebx + 0x48c], eax
call fcn.0040b40a
push esi
push 0x511dbc
mov ecx, edi
mov dword [ebx + 0x490], eax
call fcn.0040b40a
push esi
push 0x511db4
mov ecx, edi
mov dword [ebx + 0x494], eax
call fcn.0040b40a
push esi
push 0x511dac
mov ecx, edi
mov dword [ebx + 0x498], eax
call fcn.0040b40a
push esi
push 0x511da0
mov ecx, edi
mov dword [ebx + 0x49c], eax
call fcn.0040b40a
add al, al
xor al, byte [ebx + 0x1cd]
push esi
and al, 2
xor byte [ebx + 0x1cd], al
push 0x511d94
mov ecx, edi
call fcn.0040b40a
shl al, 2
xor al, byte [ebx + 0x1cd]
push esi
and al, 4
xor byte [ebx + 0x1cd], al
push 0x511d80
mov ecx, edi
call fcn.0040b40a
push esi
and al, 1
push 0x512040
mov ecx, edi
mov byte [ebx + 0x3a8], al
call fcn.0040b40a
mov dword [ebx + 0x3dc], eax
mov eax, dword [ebx + 0x3d0]
push esi
push 0x512034
mov ecx, edi
mov dword [ebx + 0x3e0], eax
call fcn.0040b40a
push esi
push 0x51202c
mov ecx, edi
mov dword [ebx + 0x3d0], eax
mov dword [ebx + 0x3e0], eax
call fcn.0040b40a
cdq
push esi
push 0x511e50
mov ecx, edi
mov dword [ebx + 0x3c0], eax
mov dword [ebx + 0x3c4], edx
call fcn.0040b40a
mov dword [ebx + 0x4ac], eax
movzx eax, byte [ebx + 0x1cf]
and eax, 8
push eax
push 0x511fe0
mov ecx, edi
call fcn.0040b40a
mov cl, byte [ebx + 0x1cf]
and cl, 0xf7
or al, cl
push 1
push 0x511fe4
mov ecx, edi
mov byte [ebx + 0x1cf], al
call fcn.0040b40a
mov cl, byte [ebx + 0x1cf]
and cl, 0xa
or al, cl
push esi
push 0x512020
mov ecx, edi
mov byte [ebx + 0x1cf], al
call fcn.0040b40a
cdq
push esi
push 0x512014
mov ecx, edi
mov dword [ebx + 0x3c8], eax
mov dword [ebx + 0x3cc], edx
call fcn.0040b40a
cmp eax, esi
setne al
shl al, 6
xor al, byte [ebx + 0x1cb]
push esi
and al, 0x40
xor byte [ebx + 0x1cb], al
push 0x512004
mov ecx, edi
call fcn.0040b40a
cmp eax, esi
setne al
shl al, 4
xor al, byte [ebx + 0x1cc]
push esi
and al, 0x10
xor byte [ebx + 0x1cc], al
push 0x511ff0
mov ecx, edi
call fcn.0040b40a
push 0xffffffffffffffff
push 0x511fe8
mov ecx, edi
mov dword [ebx + 0x360], eax
call fcn.0040b40a
mov dword [ebx + 0x1d8], eax
push dword [0x559980]
mov ecx, edi
push 0x511e90
call fcn.0040b40a
mov dword [ebx + 0x4a0], eax
push dword [0x55997c]
mov ecx, edi
push 0x511e80
call fcn.0040b40a
mov dword [ebx + 0x4a8], eax
push dword [0x559984]
mov ecx, edi
push 0x511e70
call fcn.0040b40a
push esi
push 0x511e58
mov ecx, edi
mov dword [ebx + 0x4a4], eax
call fcn.0040b40a
mov cl, byte [ebx + 0x1cb]
and cl, 0x7f
shl al, 7
or al, cl
push esi
push 0x511e44
mov ecx, edi
mov byte [ebx + 0x1cb], al
call fcn.0040b40a
cdq
mov ecx, eax
or ecx, edx
je 0x421002
mov dword [ebx + 0x380], eax
mov dword [ebx + 0x384], edx
push esi
push 0x511e34
mov ecx, edi
call fcn.0040b40a
cdq
push esi
push 0x511e28
mov ecx, edi
mov dword [ebx + 0x388], eax
mov dword [ebx + 0x38c], edx
call fcn.0040b40a
push esi
cdq
push esi
push 0x511fd8
mov ecx, edi
mov dword [ebx + 0x390], eax
mov dword [ebx + 0x394], edx
call fcn.0040b429
push esi
push 0x511fcc
mov ecx, edi
mov dword [ebx + 0x364], eax
mov dword [ebx + 0x368], edx
call fcn.0040b40a
push esi
push 0x511fc4
mov ecx, edi
mov dword [ebx + 0x374], eax
call fcn.0040b40a
test byte [ebx + 0x1cc], 1
mov dword [ebx + 0x478], eax
je 0x421238
push esi
push 0x511ea8
mov ecx, edi
call fcn.0040b40a
push esi
cdq
push esi
push 0x511f18
mov ecx, edi
mov dword [ebx + 0x5f0], eax
mov dword [ebx + 0x5f4], edx
call fcn.0040b429
push esi
push esi
push 0x511f0c
mov ecx, edi
mov dword [ebx + 0x578], eax
mov dword [ebx + 0x57c], edx
call fcn.0040b429
push esi
push esi
push 0x511f04
mov ecx, edi
mov dword [ebx + 0x580], eax
mov dword [ebx + 0x584], edx
call fcn.0040b429
push esi
push esi
push 0x511ef8
mov ecx, edi
mov dword [ebx + 0x588], eax
mov dword [ebx + 0x58c], edx
call fcn.0040b429
push esi
push esi
push 0x511eec
mov ecx, edi
mov dword [ebx + 0x590], eax
mov dword [ebx + 0x594], edx
call fcn.0040b429
push esi
push esi
push 0x511ee0
mov ecx, edi
mov dword [ebx + 0x598], eax
mov dword [ebx + 0x59c], edx
call fcn.0040b429
push esi
push esi
push 0x511ed4
mov ecx, edi
mov dword [ebx + 0x5a0], eax
mov dword [ebx + 0x5a4], edx
call fcn.0040b429
push esi
push 0x511ec8
mov ecx, edi
mov dword [ebx + 0x5a8], eax
mov dword [ebx + 0x5ac], edx
call fcn.0040b40a
xor ecx, ecx
cmp dword [ebx + 0x2b4], esi
jle 0x42117f
mov edx, dword [ebx + 0x2ac]
mov edx, dword [edx + ecx*4]
inc ecx
mov dword [edx + 0x38], eax
cmp ecx, dword [ebx + 0x2b4]
jl 0x42116a
lea eax, [ebp - 0x18]
push eax
push 0x511ec0
mov ecx, edi
call fcn.0040b398
mov dword [ebp - 0x14], eax
cmp eax, esi
je 0x4211cc
cmp dword [ebx + 0x2b4], esi
mov dword [ebp - 0x10], esi
jle 0x4211cc
push dword [ebp - 0x18]
mov eax, dword [ebx + 0x2ac]
mov ecx, dword [ebp - 0x10]
mov ecx, dword [eax + ecx*4]
push dword [ebp - 0x14]
add ecx, 0x10c
call fcn.0040f72e
inc dword [ebp - 0x10]
mov eax, dword [ebp - 0x10]
cmp eax, dword [ebx + 0x2b4]
jl 0x4211a1
lea eax, [ebp - 0x18]
push eax
push 0x511eb8
mov ecx, edi
call fcn.0040b398
mov dword [ebp - 0x14], eax
cmp eax, esi
je 0x421219
cmp dword [ebx + 0x2b4], esi
mov dword [ebp - 0x10], esi
jle 0x421219
push dword [ebp - 0x18]
mov eax, dword [ebx + 0x2ac]
mov ecx, dword [ebp - 0x10]
mov ecx, dword [eax + ecx*4]
push dword [ebp - 0x14]
add ecx, 0x11c
call fcn.0040f72e
inc dword [ebp - 0x10]
mov eax, dword [ebp - 0x10]
cmp eax, dword [ebx + 0x2b4]
jl 0x4211ee
push dword [0x88c8e0]
mov ecx, edi
push 0x5120e8
call fcn.0040b40a
cdq
mov dword [ebx + 0x530], eax
mov dword [ebx + 0x534], edx
push 0x511ea0
mov ecx, edi
call fcn.0040b36a
test eax, eax
je 0x42126e
push esi
push 0x511ea0
mov ecx, edi
call fcn.0040b40a
mov cl, byte [ebx + 0x1cd]
cmp eax, esi
setne al
shl al, 7
and cl, 0x7f
or al, cl
mov byte [ebx + 0x1cd], al
push esi
push esi
push 0x511d78
mov ecx, edi
call fcn.0040b3c9
push eax
mov ecx, ebx
call fcn.00419086
push esi
push esi
push 0x511d6c
mov ecx, edi
call fcn.0040b3c9
lea ecx, [ebx + 0x630]
mov edx, eax
call fcn.0049fef6
push esi
push 0x511d60
mov ecx, edi
call fcn.0040b40a
test eax, eax
push esi
setne al
push 0x511d4c
mov ecx, edi
mov byte [ebx + 0x634], al
call fcn.0040b40a
test eax, eax
push esi
setne al
push 0x50ff20
mov ecx, edi
mov byte [ebx + 0x63c], al
call fcn.0040b40a
mov dword [ebx + 0x638], eax
lea eax, [ebp - 0x30]
push eax
push 0x511cec
mov ecx, edi
call fcn.0040b398
cmp eax, esi
je 0x42131e
push dword [ebp - 0x30]
mov ecx, dword [ebx + 0x168]
push eax
call fcn.00449d84
test al, al
jne 0x42131e
mov al, byte [ebx + 0x1be]
and al, 0xf7
movzx eax, al
push eax
mov ecx, ebx
call fcn.00415540
jmp 0x421346
cmp byte [ebp - 1], 0
je 0x421346
mov al, byte [ebx + 0x1be]
and al, 0xf7
movzx eax, al
push eax
mov ecx, ebx
call fcn.00415540
push 1
push dword [0x895e50]
mov ecx, ebx
call fcn.004191ee
mov edi, dword [ebx + 0x168]
push dword [edi + 8]
mov ecx, dword [ebp + 8]
push 0x5120a8
mov dword [ebp - 0x34], edi
call fcn.0040b3e4
mov dword [ebp - 0x2c], eax
cmp eax, esi
je 0x4213ba
cmp byte [ebp + 0xc], 0
jne 0x4213ba
mov dword [ebp - 0x10], esi
cmp dword [edi + 8], esi
je 0x4213ba
mov dword [ebp - 0x18], esi
mov ecx, dword [ebp - 0x10]
mov eax, dword [ebp - 0x2c]
add eax, ecx
mov dword [ebp - 0x28], eax
movzx eax, byte [eax]
push 1
and eax, 0xf
push eax
push ecx
mov ecx, ebx
call fcn.0040ff3a
mov ecx, dword [ebp - 0x18]
mov eax, dword [edi]
add dword [ebp - 0x18], 0x7c
lea eax, [eax + ecx + 0x2e]
mov ecx, dword [ebp - 0x28]
mov cl, byte [ecx]
shr cl, 5
xor cl, byte [eax]
and cl, 4
xor byte [eax], cl
inc dword [ebp - 0x10]
mov eax, dword [ebp - 0x10]
cmp eax, dword [edi + 8]
jne 0x421377
push dword [edi + 8]
mov ecx, dword [ebp + 8]
push 0x511f8c
call fcn.0040b3e4
mov ecx, dword [ebp + 8]
mov dword [ebp - 0x28], eax
mov eax, dword [edi + 8]
shl eax, 2
push eax
push 0x511f7c
call fcn.0040b3e4
mov ecx, dword [ebp + 8]
mov dword [ebp - 0x20], eax
mov eax, dword [edi + 8]
shl eax, 2
push eax
push 0x511f68
call fcn.0040b3e4
mov ecx, dword [ebp + 8]
mov dword [ebp - 0x18], eax
mov eax, dword [edi + 8]
add eax, eax
push eax
push 0x511f54
call fcn.0040b3e4
mov ecx, dword [ebp + 8]
mov dword [ebp - 0x24], eax
mov eax, dword [edi + 8]
add eax, eax
push eax
push 0x511f40
call fcn.0040b3e4
mov ecx, dword [ebp + 8]
mov dword [ebp - 0x1c], eax
mov eax, dword [edi + 8]
add eax, eax
push eax
push 0x511f30
call fcn.0040b3e4
mov dword [ebp - 0x2c], eax
cmp dword [ebp - 0x28], esi
je 0x421531
cmp dword [ebp - 0x20], esi
je 0x421531
mov edx, dword [ebp - 0x18]
cmp edx, esi
je 0x421531
cmp dword [ebp - 0x24], esi
je 0x421531
mov ecx, dword [ebp - 0x1c]
cmp ecx, esi
je 0x421531
cmp byte [ebp + 0xc], 0
jne 0x421531
mov dword [ebp - 0x18], esi
cmp dword [edi + 8], esi
je 0x421531
mov dword [ebp - 8], ecx
mov ecx, dword [ebp - 0x20]
sub ecx, edx
mov dword [ebp - 0x20], ecx
mov ecx, dword [ebp - 0x24]
sub ecx, dword [ebp - 0x1c]
xor eax, eax
mov dword [ebp - 0x24], ecx
mov ecx, dword [ebp - 0x2c]
sub ecx, dword [ebp - 0x1c]
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x10], edx
mov dword [ebp - 0x1c], ecx
mov ecx, dword [edi]
mov edx, dword [ebp - 0x18]
lea eax, [ecx + eax + 0x44]
mov ecx, dword [ebp - 0x28]
mov cl, byte [edx + ecx]
xor cl, byte [eax]
mov edx, dword [ebp - 0x10]
and cl, 1
xor byte [eax], cl
mov ecx, dword [edi]
mov eax, dword [ebp - 0x20]
mov edx, dword [eax + edx]
mov eax, dword [ebp - 0x14]
mov dword [ecx + eax + 0x50], edx
mov ecx, dword [edi]
mov edx, dword [ebp - 0x10]
mov edx, dword [edx]
mov dword [ecx + eax + 0x4c], edx
mov eax, dword [ebp - 0x24]
mov edx, dword [ebp - 8]
mov dx, word [eax + edx]
mov ecx, dword [edi]
mov eax, dword [ebp - 0x14]
mov word [ecx + eax + 0x56], dx
mov edx, dword [ebp - 8]
mov ecx, dword [edi]
mov dx, word [edx]
mov word [ecx + eax + 0x54], dx
cmp dword [ebp - 0x2c], esi
je 0x421514
mov eax, dword [ebp - 0x1c]
mov edx, dword [ebp - 8]
mov dl, byte [eax + edx]
mov ecx, dword [edi]
mov eax, dword [ebp - 0x14]
mov byte [ecx + eax + 0x60], dl
inc dword [ebp - 0x18]
mov ecx, dword [ebp - 0x18]
add dword [ebp - 0x10], 4
add dword [ebp - 8], 2
add eax, 0x7c
mov dword [ebp - 0x14], eax
cmp ecx, dword [edi + 8]
jne 0x4214a9
mov ecx, dword [ebp + 8]
push 0x511fb0
call fcn.0040ba1a
mov dword [ebp - 0x1c], eax
cmp eax, esi
je 0x4215a8
cmp byte [ebp + 0xc], 0
jne 0x4215a8
mov dword [ebp - 8], esi
cmp dword [eax + 8], esi
jbe 0x4215a8
mov dword [ebp - 0x18], esi
mov eax, dword [ebp - 8]
cmp eax, dword [edi + 8]
jae 0x4215a8
mov ecx, dword [ebp - 0x1c]
push esi
push eax
call fcn.0040b2aa
mov dword [ebp - 0x2c], eax
cmp eax, esi
je 0x421596
mov eax, dword [edi]
mov ecx, dword [ebp - 0x18]
mov ecx, dword [eax + ecx + 0x58]
mov dl, 1
call fcn.00479b79
mov eax, dword [edi]
mov ecx, dword [ebp - 0x2c]
mov dword [ebp - 0x28], eax
call fcn.0042897a
mov ecx, dword [ebp - 0x28]
mov edx, dword [ebp - 0x18]
mov dword [ecx + edx + 0x58], eax
inc dword [ebp - 8]
mov eax, dword [ebp - 0x1c]
mov ecx, dword [ebp - 8]
add dword [ebp - 0x18], 0x7c
cmp ecx, dword [eax + 8]
jb 0x421556
mov ecx, dword [ebp + 8]
push 0x511f9c
call fcn.0040ba1a
mov dword [ebp - 0x1c], eax
cmp eax, esi
je 0x42161f
cmp byte [ebp + 0xc], 0
jne 0x42161f
mov dword [ebp - 8], esi
cmp dword [eax + 8], esi
jbe 0x42161f
mov dword [ebp - 0x18], esi
mov eax, dword [ebp - 8]
cmp eax, dword [edi + 8]
jae 0x42161f
mov ecx, dword [ebp - 0x1c]
push esi
push eax
call fcn.0040b2aa
mov dword [ebp - 0x2c], eax
cmp eax, esi
je 0x42160d
mov eax, dword [edi]
mov ecx, dword [ebp - 0x18]
mov ecx, dword [eax + ecx + 0x5c]
mov dl, 1
call fcn.00479b79
mov eax, dword [edi]
mov ecx, dword [ebp - 0x2c]
mov dword [ebp - 0x28], eax
call fcn.0042897a
mov ecx, dword [ebp - 0x28]
mov edx, dword [ebp - 0x18]
mov dword [ecx + edx + 0x5c], eax
inc dword [ebp - 8]
mov eax, dword [ebp - 0x1c]
mov ecx, dword [ebp - 8]
add dword [ebp - 0x18], 0x7c
cmp ecx, dword [eax + 8]
jb 0x4215cd
mov ecx, dword [ebp + 8]
push 0x5120b0
call fcn.0040ba1a
mov dword [ebp - 0x18], eax
cmp eax, esi
je 0x4216a0
mov dword [ebp - 8], esi
cmp dword [eax + 8], esi
jbe 0x4216a0
mov eax, dword [ebp - 8]
cmp eax, dword [edi + 8]
jae 0x4216a0
mov ecx, dword [ebp - 0x18]
push eax
call fcn.0040b293
mov dword [ebp - 0x1c], eax
cmp eax, esi
je 0x421692
cmp dword [eax + 8], 2
jne 0x421692
push esi
push esi
mov ecx, eax
call fcn.0040b327
mov dword [ebp - 0x2c], eax
cmp eax, dword [edi + 8]
jae 0x421692
mov ecx, dword [ebp - 0x1c]
push esi
push esi
push 1
call fcn.0040b2c2
mov ecx, eax
call fcn.0042876e
mov ecx, dword [ebx + 0x168]
push eax
mov eax, dword [ebp - 0x2c]
imul eax, eax, 0x7c
add eax, dword [edi]
push eax
call fcn.0044a35e
inc dword [ebp - 8]
mov eax, dword [ebp - 0x18]
mov ecx, dword [ebp - 8]
cmp ecx, dword [eax + 8]
jb 0x42163b
test byte [ebx + 0x1cf], 2
jne 0x4217ca
mov ecx, dword [ebp + 8]
lea eax, [ebp - 8]
push eax
push 0x511cf4
mov dword [ebp - 8], esi
call fcn.0040b398
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 8]
push 6
xor edx, edx
pop ecx
div ecx
cmp edx, esi
jne 0x42173c
mov dword [ebp - 8], eax
mov dword [ebp - 0x18], esi
cmp eax, esi
jbe 0x42173c
mov eax, dword [ebp - 0x1c]
movzx ecx, word [eax + 4]
push ecx
push dword [eax]
lea ecx, [ebp - 0x4c]
call fcn.0049ca27
lea ecx, [ebp - 0x4c]
call fcn.0040e0b5
test al, al
jne 0x42172d
mov eax, 0xffff
cmp word [ebp - 0x3c], ax
jne 0x42170b
xor eax, eax
mov word [ebp - 0x3c], ax
push esi
push 0x4863d1
lea eax, [ebp - 0x4c]
push eax
push esi
push esi
mov ecx, ebx
call fcn.00418406
cmp eax, esi
je 0x42172d
add dword [eax + 0x72], 0xfffff8f8
adc dword [eax + 0x76], 0xffffffff
inc dword [ebp - 0x18]
mov eax, dword [ebp - 0x18]
add dword [ebp - 0x1c], 6
cmp eax, dword [ebp - 8]
jb 0x4216dc
mov ecx, dword [ebp + 8]
lea eax, [ebp - 8]
push eax
push 0x511cfc
mov dword [ebp - 8], esi
call fcn.0040b398
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 8]
push 0x12
xor edx, edx
pop ecx
div ecx
cmp edx, esi
jne 0x4217ca
mov dword [ebp - 8], eax
mov dword [ebp - 0x18], esi
cmp eax, esi
jbe 0x4217ca
mov eax, dword [ebp - 0x1c]
movzx ecx, word [eax + 0x10]
push ecx
push eax
lea ecx, [ebp - 0x4c]
call fcn.0049ca5c
lea ecx, [ebp - 0x4c]
call fcn.0040e0b5
test al, al
jne 0x4217bb
mov eax, 0xffff
cmp word [ebp - 0x3c], ax
jne 0x421799
xor eax, eax
mov word [ebp - 0x3c], ax
push esi
push 0x4863d1
lea eax, [ebp - 0x4c]
push eax
push esi
push esi
mov ecx, ebx
call fcn.00418406
cmp eax, esi
je 0x4217bb
add dword [eax + 0x72], 0xfffff8f8
adc dword [eax + 0x76], 0xffffffff
inc dword [ebp - 0x18]
mov eax, dword [ebp - 0x18]
add dword [ebp - 0x1c], 0x12
cmp eax, dword [ebp - 8]
jb 0x42176b
mov eax, dword [ebx + 0x178]
mov ecx, dword [ebp + 8]
add eax, 7
shr eax, 3
push eax
push 0x512104
call fcn.0040b3e4
test byte [ebx + 0x1cc], 1
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x28], esi
mov dword [ebp - 0x24], esi
je 0x421830
mov eax, dword [ebx + 0x178]
mov ecx, dword [ebp + 8]
add eax, 7
shr eax, 3
push eax
push 0x5120fc
call fcn.0040b3e4
mov ecx, dword [ebp + 8]
mov dword [ebp - 0x28], eax
mov eax, dword [ebx + 0x178]
add eax, 7
shr eax, 3
push eax
push 0x5120f0
call fcn.0040b3e4
mov dword [ebp - 0x24], eax
cmp dword [ebp - 0x2c], esi
je 0x4219cd
xor ecx, ecx
cmp dword [ebx + 0x178], esi
jmp 0x421907
mov edx, dword [ebp - 0x2c]
mov eax, ecx
shr eax, 3
mov dl, byte [edx + eax]
and ecx, 7
shr dl, cl
mov dword [ebp - 0x1c], ecx
test dl, 1
je 0x4218fd
mov ecx, dword [ebx + 0x18c]
add ecx, eax
mov dword [ebp - 0x20], ecx
mov ecx, dword [ebp - 0x1c]
mov dl, 1
shl dl, cl
mov ecx, dword [ebp - 0x20]
or byte [ecx], dl
mov ecx, dword [ebx + 0x190]
add ecx, eax
mov byte [ebp - 1], dl
not dl
and byte [ecx], dl
mov ecx, dword [ebx + 0x194]
add ecx, eax
and byte [ecx], dl
test byte [ebx + 0x1cc], 1
je 0x4218dd
mov ecx, dword [ebp - 0x28]
cmp ecx, esi
je 0x4218bc
mov dl, byte [ecx + eax]
mov cl, byte [ebp - 0x1c]
shr dl, cl
test dl, 1
je 0x4218bc
mov ecx, dword [ebx + 0x19c]
mov dl, byte [ebp - 1]
add ecx, eax
or byte [ecx], dl
mov ecx, dword [ebp - 0x24]
cmp ecx, esi
je 0x4218dd
mov dl, byte [ecx + eax]
mov cl, byte [ebp - 0x1c]
shr dl, cl
test dl, 1
je 0x4218dd
mov ecx, dword [ebx + 0x1a0]
add eax, ecx
mov cl, byte [ebp - 1]
or byte [eax], cl
push dword [ebp - 0x18]
mov ecx, dword [ebx + 0x168]
inc dword [ebx + 0x17c]
call fcn.00449cc1
add dword [ebx + 0x318], eax
adc dword [ebx + 0x31c], esi
mov ecx, dword [ebp - 0x18]
inc ecx
cmp ecx, dword [ebx + 0x178]
mov dword [ebp - 0x18], ecx
jne 0x421846
mov ecx, dword [ebp + 8]
push esi
push 0x512090
call fcn.0040b40a
test eax, eax
je 0x42193a
mov al, byte [ebx + 0x1be]
or al, 8
movzx eax, al
push eax
mov ecx, ebx
call fcn.00415540
jmp 0x4219cd
mov eax, dword [ebx + 0x168]
cmp dword [eax + 0x54], esi
jne 0x4219cd
mov eax, dword [eax + 8]
mov ecx, dword [ebp + 8]
mov dword [ebp - 0x28], eax
add eax, 7
shr eax, 3
push eax
push 0x512098
mov dword [ebp - 0x20], eax
call fcn.0040b3e4
mov dword [ebp - 0x24], eax
cmp eax, esi
je 0x4219cd
mov al, byte [ebx + 0x1be]
or al, 8
movzx eax, al
push eax
mov ecx, ebx
call fcn.00415540
xor ecx, ecx
cmp dword [ebp - 0x28], esi
jmp 0x4219a2
mov edx, dword [ebp - 0x24]
mov eax, ecx
shr eax, 3
mov al, byte [eax + edx]
and cl, 7
shr al, cl
test al, 1
je 0x4219a9
mov ecx, dword [ebp - 0x2c]
inc ecx
cmp ecx, dword [ebp - 0x28]
mov dword [ebp - 0x2c], ecx
jne 0x421987
jmp 0x4219cd
mov al, byte [ebx + 0x1be]
and al, 0xf7
movzx eax, al
push eax
mov ecx, ebx
call fcn.00415540
mov edx, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x24]
call fcn.00479ccc
mov dword [ebx + 0x198], eax
mov ecx, dword [ebp + 8]
push 0x511d38
call fcn.0040ba1a
mov dword [ebp - 8], eax
cmp eax, esi
je 0x421a31
jmp 0x4219f2
mov eax, dword [ebx + 0x2ac]
push dword [eax]
mov ecx, ebx
call fcn.00419039
cmp dword [ebx + 0x2b4], esi
jne 0x4219e3
mov eax, dword [ebp - 8]
mov dword [ebp - 0x10], esi
cmp dword [eax + 8], esi
je 0x421a31
mov ecx, dword [ebp - 8]
push esi
push esi
push dword [ebp - 0x10]
call fcn.0040b2c2
cmp eax, esi
je 0x421bd2
push esi
push eax
mov ecx, ebx
call fcn.004152e7
inc dword [ebp - 0x10]
mov eax, dword [ebp - 8]
mov ecx, dword [ebp - 0x10]
cmp ecx, dword [eax + 8]
jne 0x421a05
mov ecx, dword [ebp + 8]
push 0x511d2c
call fcn.0040ba1a
cmp eax, esi
je 0x421a4f
push esi
push eax
lea ecx, [ebx + 0x274]
call fcn.0042d1cd
mov ecx, dword [ebp + 8]
push 0x511d44
call fcn.0040ba1a
mov dword [ebp - 8], eax
cmp eax, esi
je 0x421a8e
mov dword [ebp - 0x18], esi
cmp dword [eax + 8], esi
jbe 0x421a8e
mov ecx, dword [ebp - 8]
push esi
push esi
push dword [ebp - 0x18]
call fcn.0040b2c2
push eax
mov ecx, ebx
call fcn.004154ed
inc dword [ebp - 0x18]
mov eax, dword [ebp - 8]
mov ecx, dword [ebp - 0x18]
cmp ecx, dword [eax + 8]
jb 0x421a6b
mov ecx, dword [ebp + 8]
push 0x511d20
call fcn.0040ba1a
mov dword [ebp - 8], eax
cmp eax, esi
je 0x421b19
test byte [ebx + 0x1cc], 1
jne 0x421b19
mov ecx, ebx
call fcn.004456d8
lea ecx, [ebx + 0x2b8]
call fcn.0043d153
lea eax, [ebx + 0x2b8]
mov dword [eax], esi
mov dword [eax + 8], esi
mov dword [eax + 4], esi
mov eax, dword [ebp - 8]
mov dword [ebp - 0x18], esi
cmp dword [eax + 8], esi
je 0x421b12
mov ecx, dword [ebp - 8]
push esi
push esi
push dword [ebp - 0x18]
call fcn.0040b2c2
cmp eax, esi
je 0x421b04
mov ecx, eax
call fcn.0049ff51
push 4
mov dword [ebp - 0x2c], eax
push 1
lea eax, [ebp - 0x2c]
push eax
lea ecx, [ebx + 0x2b8]
call fcn.004a117a
inc dword [ebp - 0x18]
mov eax, dword [ebp - 8]
mov ecx, dword [ebp - 0x18]
cmp ecx, dword [eax + 8]
jne 0x421ad6
and byte [ebx + 0x1cc], 0xf7
push dword [ebx + 0x184]
mov ecx, dword [ebp + 8]
push 0x511d14
call fcn.0040b40a
mov ecx, dword [ebp + 8]
push 0x511d0c
mov dword [ebx + 0x184], eax
call fcn.0040ba1a
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x18], esi
cmp eax, esi
je 0x421c86
mov eax, dword [ebp - 0x18]
mov ecx, dword [ebp - 0x2c]
cmp eax, dword [ecx + 8]
je 0x421c86
lea eax, [ebp - 0x1c]
push eax
push dword [ebp - 0x18]
mov dword [ebp - 0x1c], esi
call fcn.0040b2aa
cmp dword [ebp - 0x1c], 4
mov dword [ebp - 0x14], eax
jbe 0x421c7e
mov ecx, dword [eax]
cmp ecx, dword [ebx + 0x178]
jae 0x421c7e
mov edx, dword [ebx + 0x18c]
mov eax, ecx
shr eax, 3
mov al, byte [eax + edx]
and cl, 7
shr al, cl
test al, 1
jne 0x421c7e
mov eax, dword [ebp - 0x14]
push dword [eax]
mov ecx, ebx
call fcn.0040e831
mov byte [eax + 0x28], 3
mov dword [ebp - 8], eax
mov eax, dword [eax + 4]
lea ecx, [eax + 7]
shr ecx, 3
add ecx, 4
cmp dword [ebp - 0x1c], ecx
jne 0x421c7e
xor ecx, ecx
cmp eax, esi
jmp 0x421c79
push dword [ebp - 0x10]
mov ecx, dword [ebp - 8]
call fcn.0040b293
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x28], esi
mov dword [ebp - 0x18], esi
cmp eax, esi
je 0x421a23
mov eax, dword [ebp - 0x2c]
mov ecx, dword [ebp - 0x18]
cmp ecx, dword [eax + 8]
je 0x421a23
push esi
push esi
push ecx
mov ecx, eax
call fcn.0040b2c2
cmp eax, esi
je 0x421c19
push dword [ebp - 0x28]
mov ecx, ebx
push eax
call fcn.004152e7
mov dword [ebp - 0x28], eax
inc dword [ebp - 0x18]
jmp 0x421bee
mov edx, dword [ebp - 0x14]
mov eax, ecx
shr eax, 3
mov al, byte [eax + edx + 4]
and cl, 7
shr al, cl
test al, 1
je 0x421c6f
mov eax, dword [ebp - 8]
cmp dword [eax + 0xc], 1
je 0x421c6f
mov edx, dword [eax + 0x2c]
mov ecx, dword [ebp - 0x10]
mov dword [edx + ecx*4], 0x567dfc
mov edx, dword [eax + 0x24]
mov byte [ecx + edx], 9
dec dword [eax + 0xc]
dec dword [eax + 8]
dec dword [eax + 0x18]
push ecx
push dword [eax]
mov ecx, ebx
call fcn.0040d4da
add dword [ebx + 0x318], eax
adc dword [ebx + 0x31c], esi
mov ecx, dword [ebp - 0x10]
mov eax, dword [ebp - 8]
inc ecx
cmp ecx, dword [eax + 4]
mov dword [ebp - 0x10], ecx
jne 0x421c1e
inc dword [ebp - 0x18]
jmp 0x421b4d
cmp byte [ebp + 0xc], 0
jne 0x421cf9
mov ecx, dword [ebp + 8]
push esi
push 0x5120cc
call fcn.0040b40a
test byte [ebx + 0x1be], 0x10
jne 0x421cee
mov ecx, ebx
cmp eax, 1
jne 0x421cb1
call fcn.00420857
jmp 0x421cf9
cmp eax, 2
jne 0x421cbd
call fcn.0042092d
jmp 0x421cf9
cmp eax, 3
jne 0x421ce8
test byte [ebx + 0x1cd], 2
je 0x421cd9
push 0x512a44
push 0x70
call fcn.00419266
jmp 0x421cee
push 1
push dword [0x895e2c]
call fcn.004191ee
jmp 0x421cee
push esi
call fcn.004192f5
push 0xffffffffffffffff
push 1
mov ecx, ebx
call fcn.0041b516
mov ecx, dword [ebp + 8]
push 0x511ce0
call fcn.0040ba1a
mov dword [ebp - 0x1c], eax
mov byte [ebp - 1], 0
cmp eax, esi
je 0x421e1f
cmp byte [ebp + 0xc], 0
jne 0x421e1f
mov dword [ebp - 8], esi
cmp dword [eax + 8], esi
jbe 0x421e1f
mov dword [ebp + 0xc], esi
mov eax, dword [ebp - 8]
cmp eax, dword [edi + 8]
jae 0x421e1f
mov ecx, dword [ebp - 0x1c]
push eax
call fcn.0040b293
mov dword [ebp - 0x10], eax
cmp eax, esi
je 0x421e09
mov eax, dword [eax + 8]
cmp eax, esi
mov dword [ebp - 0x28], eax
jle 0x421d7b
mov eax, dword [edi]
mov ecx, dword [ebp - 0x10]
push esi
push esi
mov dword [ebp - 0x2c], eax
call fcn.0040b327
mov ecx, dword [ebp + 0xc]
mov edx, dword [ebp - 0x2c]
mov byte [ecx + edx + 0x30], al
mov eax, dword [edi]
add eax, ecx
mov cl, byte [eax + 0x30]
mov byte [eax + 0x2f], cl
cmp dword [ebp - 0x28], 1
jle 0x421dc5
mov ecx, dword [ebp - 0x10]
mov edi, dword [edi]
push esi
push esi
push 1
call fcn.0040b345
mov ecx, dword [ebp + 0xc]
mov dword [ecx + edi + 0x38], eax
mov dword [ecx + edi + 0x3c], edx
mov edi, dword [ebp - 0x34]
mov eax, dword [edi]
mov edx, dword [eax + ecx + 0x38]
mov eax, dword [eax + ecx + 0x3c]
cmp eax, dword [ebx + 0x690]
jl 0x421dc5
jg 0x421db9
cmp edx, dword [ebx + 0x68c]
jbe 0x421dc5
mov dword [ebx + 0x68c], edx
mov dword [ebx + 0x690], eax
mov eax, dword [ebp - 0x10]
cmp dword [eax + 8], 2
mov eax, dword [edi]
jbe 0x421df2
mov ecx, dword [ebp - 0x10]
push esi
push esi
push 2
mov dword [ebp - 0x2c], eax
call fcn.0040b2c2
mov edx, dword [ebp - 0x2c]
mov ecx, dword [ebp + 0xc]
lea ecx, [ecx + edx + 0x34]
mov edx, eax
call fcn.0049fef6
jmp 0x421df9
mov ecx, dword [ebp + 0xc]
mov dword [eax + ecx + 0x34], esi
mov eax, dword [edi]
mov ecx, dword [ebp + 0xc]
cmp byte [eax + ecx + 0x30], 1
jne 0x421e09
mov byte [ebp - 1], 1
inc dword [ebp - 8]
mov eax, dword [ebp - 0x1c]
mov ecx, dword [ebp - 8]
add dword [ebp + 0xc], 0x7c
cmp ecx, dword [eax + 8]
jb 0x421d2e
mov ecx, dword [ebp + 8]
push 0x511cd4
call fcn.0040ba1a
mov dword [ebp - 0x18], eax
cmp eax, esi
je 0x421ea3
mov dword [ebp + 0xc], esi
cmp dword [eax + 8], esi
jbe 0x421e6b
mov ecx, dword [ebp - 0x18]
push esi
push dword [ebp + 0xc]
call fcn.0040b327
push 4
mov dword [ebp - 0x34], eax
push 1
lea eax, [ebp - 0x34]
push eax
lea ecx, [ebx + 0x694]
call fcn.004a117a
inc dword [ebp + 0xc]
mov eax, dword [ebp - 0x18]
mov ecx, dword [ebp + 0xc]
cmp ecx, dword [eax + 8]
jb 0x421e3b
mov eax, dword [ebp - 0x18]
mov eax, dword [eax + 8]
cmp eax, esi
jne 0x421e93
cmp dword [ebx + 0x690], esi
jl 0x421e93
jg 0x421e87
cmp dword [ebx + 0x68c], esi
jbe 0x421e93
mov dword [ebx + 0x688], 5
jmp 0x421ea3
neg eax
sbb eax, eax
and eax, 0xfffffffb
add eax, 6
mov dword [ebx + 0x688], eax
mov ecx, dword [ebp + 8]
push 0x511cc8
call fcn.0040ba1a
mov dword [ebp - 0x18], eax
cmp eax, esi
je 0x421efd
mov dword [ebp + 0xc], esi
cmp dword [eax + 8], esi
jbe 0x421eef
mov ecx, dword [ebp - 0x18]
push esi
push dword [ebp + 0xc]
call fcn.0040b327
push 4
mov dword [ebp - 0x34], eax
push 1
lea eax, [ebp - 0x34]
push eax
lea ecx, [ebx + 0x6a0]
call fcn.004a117a
inc dword [ebp + 0xc]
mov eax, dword [ebp - 0x18]
mov ecx, dword [ebp + 0xc]
cmp ecx, dword [eax + 8]
jb 0x421ebf
mov eax, dword [ebp - 0x18]
cmp dword [eax + 8], esi
jbe 0x421efd
mov dword [ebx + 0x688], esi
cmp byte [ebp - 1], 0
je 0x421f0d
mov dword [ebx + 0x688], 3
push esi
push 0x80
mov ecx, ebx
call fcn.0040f0bd
mov ecx, dword [ebp + 8]
push esi
push 0x511cbc
call fcn.0040b398
mov dword [ebp - 0x34], eax
cmp eax, esi
je 0x421f74
xor ecx, ecx
mov dword [ebp - 0x2c], ecx
cmp dword [edi + 8], esi
jbe 0x421f74
mov dword [ebp + 0xc], esi
mov edx, dword [ebp + 0xc]
mov eax, dword [edi]
lea eax, [eax + edx + 0x2e]
mov edx, dword [ebp - 0x34]
add dword [ebp + 0xc], 0x7c
mov dword [ebp - 0x28], eax
mov eax, ecx
shr eax, 3
mov al, byte [eax + edx]
and cl, 7
shr al, cl
mov ecx, dword [ebp - 0x28]
shl al, 3
xor al, byte [ecx]
and al, 8
xor byte [ecx], al
mov ecx, dword [ebp - 0x2c]
inc ecx
mov dword [ebp - 0x2c], ecx
cmp ecx, dword [edi + 8]
jb 0x421f3c
mov ecx, dword [ebp + 8]
push 0x511cac
call fcn.0040ba1a
cmp byte [0x890488], 0
mov edi, eax
je 0x421fb3
cmp edi, esi
je 0x421fb3
push dword [ebx + 0x628]
lea ecx, [ebp + 0xc]
call fcn.004a0fd9
lea eax, [ebp + 0xc]
push eax
push edi
lea ecx, [ebx + 0x1c]
call fcn.00435288
lea ecx, [ebp + 0xc]
call fcn.004a0c7d
mov ecx, dword [ebp + 8]
push 0x511f24
call fcn.0040ba02
mov edi, eax
cmp edi, esi
pop esi
je 0x421fdf
lea eax, [ebp + 0xc]
push eax
mov ecx, 0x88de88
call fcn.0041386d
mov ecx, dword [ebp + 0xc]
push edi
push ebx
call fcn.004aec5f
mov al, 1
pop edi
pop ebx
leave
ret 8