Function at 0x507010
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x44
push ebx
push esi
push edi
mov edi, dword [ebp + 0x10]
mov eax, dword [edi]
xor ebx, ebx
mov esi, ecx
mov dword [esp + 0x24], eax
cmp dword [ebp + 0x1c], ebx
je 0x50706e
push 0x49
mov ecx, edi
call fcn.0047aca0
push 0x3a
mov ecx, edi
call fcn.0047aca0
push 0xffffffffffffff93
mov ecx, edi
call fcn.0047aca0
push 0xffffffffffffff86
mov ecx, edi
call fcn.0047aca0
mov dword [esi + 0x478], ebx
mov dword [esi + 0x47c], ebx
mov dword [esi + 0x480], 1
mov dword [esi + 0x484], ebx
mov eax, dword [ebp + 8]
mov ecx, dword [ebp + 0xc]
add ecx, eax
cmp eax, ecx
mov dword [esp + 0x20], ecx
jge 0x5097f3
jmp 0x507088
mov eax, dword [esp + 0x14]
lea edx, [esp + 0x10]
push edx
push 1
push eax
mov ecx, esi
mov dword [esp + 0x1c], 1
call fcn.00505b50
cmp dword [esp + 0x10], 0
mov dword [esp + 0x14], eax
je 0x5097f3
mov ebx, dword [esi + 0x478]
mov eax, ebx
shl eax, 4
cmp dword [eax + esi + 0x158], 0
jne case.0x5070f2.11
dec ebx
lea ecx, [ebx + 0x17]
shl ecx, 4
mov dword [esi + 0x478], ebx
mov eax, dword [ecx + esi]
cmp eax, 0xc00
jg 0x508bf9
je case.0x508c0e.3075
dec eax
cmp eax, 0x1e
ja case.0x508c0e.3075
jmp dword [eax*4 + 0x509840]
cmp dword [esi + 0x480], 0
je 0x50711c
mov edx, dword [ebp + 0x18]
push edx
push edi
and ebx, 1
push ebx
mov ecx, esi
call fcn.00506200
mov dword [esi + 0x480], 0
fldz
mov eax, 1
cmp dword [esi + 0x478], eax
fstp qword [esp + 0x28]
mov dword [esp + 0xc], eax
jle 0x5072fa
mov dword [esp + 0x18], eax
lea ebx, [esi + 0x178]
mov ecx, ebx
call fcn.00505230
test eax, eax
je 0x507232
lea edx, [ebx - 0x10]
mov ecx, edx
call fcn.005052b0
fstp qword [esp + 0x38]
mov ecx, ebx
call fcn.005052b0
fadd qword [esp + 0x38]
xor eax, eax
cmp dword [ebx], 1
fadd qword [esp + 0x28]
sete al
xor ecx, ecx
cmp dword [edx], 1
fst qword [esp + 0x28]
sete cl
and eax, ecx
and dword [esp + 0xc], eax
je 0x50719e
fadd qword [0x579e48]
mov dword [esp + 0x40], 1
call fcn.00551da0
jmp 0x5071ae
fstp qword [esp + 0x48]
mov eax, dword [esp + 0x48]
mov dword [esp + 0x40], 2
mov edx, dword [esp + 0x40]
push edi
sub esp, 0x10
mov ecx, esp
mov dword [ecx], edx
mov edx, dword [esp + 0x58]
mov dword [ecx + 4], edx
mov dword [ecx + 8], eax
mov eax, dword [esp + 0x60]
mov dword [ecx + 0xc], eax
mov ecx, esi
call fcn.005053a0
mov eax, dword [ebx]
cmp eax, 1
jne 0x5071e2
mov ecx, dword [ebx + 8]
mov edx, eax
neg ecx
jmp 0x50720d
cmp eax, 3
jne 0x5071f7
mov ecx, dword [ebx + 8]
mov edx, eax
mov eax, dword [ebx + 0xc]
neg ecx
mov dword [esp + 0x4c], eax
jmp 0x50720d
mov ecx, ebx
mov edx, 2
call fcn.005052b0
fchs
fstp qword [esp + 0x48]
mov ecx, dword [esp + 0x48]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [esp + 0x58]
mov dword [eax + 4], edx
mov dword [eax + 8], ecx
mov ecx, dword [esp + 0x60]
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
jmp 0x5072d7
lea ecx, [ebx - 0x10]
call fcn.005052b0
fadd qword [esp + 0x28]
xor edx, edx
cmp dword [ecx], 1
fst qword [esp + 0x28]
sete dl
and dword [esp + 0xc], edx
je 0x507265
fadd qword [0x579e48]
mov dword [esp + 0x40], 1
call fcn.00551da0
jmp 0x507275
fstp qword [esp + 0x48]
mov eax, dword [esp + 0x48]
mov dword [esp + 0x40], 2
mov edx, dword [esp + 0x40]
push edi
sub esp, 0x10
mov ecx, esp
mov dword [ecx], edx
mov edx, dword [esp + 0x58]
mov dword [ecx + 4], edx
mov dword [ecx + 8], eax
mov eax, dword [esp + 0x60]
mov dword [ecx + 0xc], eax
mov ecx, esi
call fcn.005053a0
mov ecx, dword [ebx]
mov edx, dword [ebx + 4]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [ebx + 8]
mov dword [eax + 4], edx
mov edx, dword [ebx + 0xc]
mov dword [eax + 8], ecx
mov ecx, esi
mov dword [eax + 0xc], edx
call fcn.005053a0
mov ecx, ebx
call fcn.005052b0
fadd qword [esp + 0x28]
xor eax, eax
cmp dword [ebx], 1
fstp qword [esp + 0x28]
sete al
and dword [esp + 0xc], eax
push 1
mov ecx, edi
call fcn.0047aca0
mov eax, dword [esp + 0x18]
add eax, 2
add ebx, 0x20
cmp eax, dword [esi + 0x478]
mov dword [esp + 0x18], eax
jl 0x507141
mov eax, dword [esi + 0x478]
cdq
sub eax, edx
sar eax, 1
add dword [esi + 0x47c], eax
jmp case.0x508c0e.3075
cmp dword [esi + 0x480], 0
je 0x507333
mov ecx, dword [ebp + 0x18]
push ecx
push edi
and ebx, 1
push ebx
mov ecx, esi
call fcn.00506200
mov dword [esi + 0x480], 0
fldz
mov eax, 1
cmp dword [esi + 0x478], eax
fstp qword [esp + 0x28]
mov dword [esp + 0xc], eax
jle 0x5072fa
mov dword [esp + 0x18], eax
lea ebx, [esi + 0x178]
mov ecx, ebx
call fcn.00505230
test eax, eax
je 0x507445
lea edx, [ebx - 0x10]
mov ecx, edx
call fcn.005052b0
fstp qword [esp + 0x38]
mov ecx, ebx
call fcn.005052b0
fadd qword [esp + 0x38]
xor eax, eax
cmp dword [edx], 1
fadd qword [esp + 0x28]
sete al
xor ecx, ecx
cmp dword [ebx], 1
fst qword [esp + 0x28]
sete cl
and eax, ecx
and dword [esp + 0xc], eax
je 0x5073b1
fadd qword [0x579e48]
mov dword [esp + 0x40], 1
call fcn.00551da0
jmp 0x5073c1
fstp qword [esp + 0x48]
mov eax, dword [esp + 0x48]
mov dword [esp + 0x40], 2
mov edx, dword [esp + 0x40]
push edi
sub esp, 0x10
mov ecx, esp
mov dword [ecx], edx
mov edx, dword [esp + 0x58]
mov dword [ecx + 4], edx
mov dword [ecx + 8], eax
mov eax, dword [esp + 0x60]
mov dword [ecx + 0xc], eax
mov ecx, esi
call fcn.005053a0
mov eax, dword [ebx]
cmp eax, 1
jne 0x5073f5
mov ecx, dword [ebx + 8]
mov edx, eax
neg ecx
jmp 0x507420
cmp eax, 3
jne 0x50740a
mov ecx, dword [ebx + 8]
mov edx, eax
mov eax, dword [ebx + 0xc]
neg ecx
mov dword [esp + 0x4c], eax
jmp 0x507420
mov ecx, ebx
mov edx, 2
call fcn.005052b0
fchs
fstp qword [esp + 0x48]
mov ecx, dword [esp + 0x48]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [esp + 0x58]
mov dword [eax + 4], edx
mov dword [eax + 8], ecx
mov ecx, dword [esp + 0x60]
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
jmp 0x5074ea
lea ecx, [ebx - 0x10]
call fcn.005052b0
fadd qword [esp + 0x28]
xor edx, edx
cmp dword [ecx], 1
fst qword [esp + 0x28]
sete dl
and dword [esp + 0xc], edx
je 0x507478
fadd qword [0x579e48]
mov dword [esp + 0x40], 1
call fcn.00551da0
jmp 0x507488
fstp qword [esp + 0x48]
mov eax, dword [esp + 0x48]
mov dword [esp + 0x40], 2
mov edx, dword [esp + 0x40]
push edi
sub esp, 0x10
mov ecx, esp
mov dword [ecx], edx
mov edx, dword [esp + 0x58]
mov dword [ecx + 4], edx
mov dword [ecx + 8], eax
mov eax, dword [esp + 0x60]
mov dword [ecx + 0xc], eax
mov ecx, esi
call fcn.005053a0
mov ecx, dword [ebx]
mov edx, dword [ebx + 4]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [ebx + 8]
mov dword [eax + 4], edx
mov edx, dword [ebx + 0xc]
mov dword [eax + 8], ecx
mov ecx, esi
mov dword [eax + 0xc], edx
call fcn.005053a0
mov ecx, ebx
call fcn.005052b0
fadd qword [esp + 0x28]
xor eax, eax
cmp dword [ebx], 1
fstp qword [esp + 0x28]
sete al
and dword [esp + 0xc], eax
push 3
mov ecx, edi
call fcn.0047aca0
mov eax, dword [esp + 0x18]
add eax, 2
add ebx, 0x20
cmp eax, dword [esi + 0x478]
mov dword [esp + 0x18], eax
jl 0x507354
jmp 0x5072fa
cmp dword [esi + 0x480], 0
je 0x50753a
mov ecx, dword [ebp + 0x18]
xor edx, edx
cmp ebx, 2
sete dl
push ecx
push edi
mov ecx, esi
push edx
call fcn.00506200
mov dword [esi + 0x480], 0
cmp dword [esi + 0x484], 0
je 0x507556
push 9
mov ecx, edi
call fcn.0047aca0
mov dword [esi + 0x484], 0
mov ecx, dword [esi + 0x168]
mov edx, dword [esi + 0x16c]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [esi + 0x170]
mov dword [eax + 4], edx
mov edx, dword [esi + 0x174]
mov dword [eax + 8], ecx
mov ecx, esi
mov dword [eax + 0xc], edx
call fcn.005053a0
push 4
mov ecx, edi
call fcn.0047aca0
jmp case.0x508c0e.3075
cmp ebx, 1
jle 0x5097d1
mov dword [esp + 0x18], 1
lea ebx, [esi + 0x178]
jmp 0x5075b0
mov ecx, dword [ebx - 0x10]
mov edx, dword [ebx - 0xc]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [ebx - 8]
mov dword [eax + 4], edx
mov edx, dword [ebx - 4]
mov dword [eax + 8], ecx
mov ecx, esi
mov dword [eax + 0xc], edx
call fcn.005053a0
mov ecx, dword [ebx]
mov edx, dword [ebx + 4]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [ebx + 8]
mov dword [eax + 4], edx
mov edx, dword [ebx + 0xc]
mov dword [eax + 8], ecx
mov ecx, esi
mov dword [eax + 0xc], edx
call fcn.005053a0
push 5
mov ecx, edi
call fcn.0047aca0
mov eax, dword [esp + 0x18]
add eax, 2
add ebx, 0x20
cmp eax, dword [esi + 0x478]
mov dword [esp + 0x18], eax
jl 0x5075b0
jmp 0x5097d1
mov dword [esp + 0xc], 0
test ebx, ebx
jle 0x5097d1
lea ebx, [esi + 0x168]
mov ecx, dword [ebx]
mov edx, dword [ebx + 4]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [ebx + 8]
mov dword [eax + 4], edx
mov edx, dword [ebx + 0xc]
mov dword [eax + 8], ecx
mov ecx, esi
mov dword [eax + 0xc], edx
call fcn.005053a0
mov al, byte [esp + 0xc]
and al, 1
or al, 6
movzx ecx, al
push ecx
mov ecx, edi
call fcn.0047aca0
mov eax, dword [esp + 0xc]
inc eax
add ebx, 0x10
cmp eax, dword [esi + 0x478]
mov dword [esp + 0xc], eax
jl 0x507631
jmp 0x5097d1
mov dword [esp + 0xc], 0
test ebx, ebx
jle 0x5097d1
lea ebx, [esi + 0x168]
mov edx, dword [ebx]
mov ecx, dword [ebx + 4]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [ebx + 8]
mov dword [eax + 4], ecx
mov ecx, dword [ebx + 0xc]
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
mov dl, byte [esp + 0xc]
not dl
and dl, 1
or dl, 6
movzx eax, dl
push eax
mov ecx, edi
call fcn.0047aca0
mov eax, dword [esp + 0xc]
inc eax
add ebx, 0x10
cmp eax, dword [esi + 0x478]
mov dword [esp + 0xc], eax
jl 0x507696
jmp 0x5097d1
mov dword [esp + 0xc], 0
test ebx, ebx
jle 0x5097d1
lea ebx, [esi + 0x178]
nop
mov ecx, dword [ebx - 0x10]
mov edx, dword [ebx - 0xc]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [ebx - 8]
mov dword [eax + 4], edx
mov edx, dword [ebx - 4]
mov dword [eax + 8], ecx
mov ecx, esi
mov dword [eax + 0xc], edx
call fcn.005053a0
mov ecx, dword [ebx]
mov edx, dword [ebx + 4]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [ebx + 8]
mov dword [eax + 4], edx
mov edx, dword [ebx + 0xc]
mov dword [eax + 8], ecx
mov ecx, esi
mov dword [eax + 0xc], edx
call fcn.005053a0
mov ecx, dword [ebx + 0x10]
mov edx, dword [ebx + 0x14]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [ebx + 0x18]
mov dword [eax + 4], edx
mov edx, dword [ebx + 0x1c]
mov dword [eax + 8], ecx
mov ecx, esi
mov dword [eax + 0xc], edx
call fcn.005053a0
mov ecx, dword [ebx + 0x20]
mov edx, dword [ebx + 0x24]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [ebx + 0x28]
mov dword [eax + 4], edx
mov edx, dword [ebx + 0x2c]
mov dword [eax + 8], ecx
mov ecx, esi
mov dword [eax + 0xc], edx
call fcn.005053a0
mov ecx, dword [ebx + 0x30]
mov edx, dword [ebx + 0x34]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [ebx + 0x38]
mov dword [eax + 4], edx
mov edx, dword [ebx + 0x3c]
mov dword [eax + 8], ecx
mov ecx, esi
mov dword [eax + 0xc], edx
call fcn.005053a0
mov ecx, dword [ebx + 0x40]
mov edx, dword [ebx + 0x44]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [ebx + 0x48]
mov dword [eax + 4], edx
mov edx, dword [ebx + 0x4c]
mov dword [eax + 8], ecx
mov ecx, esi
mov dword [eax + 0xc], edx
call fcn.005053a0
push 8
mov ecx, edi
call fcn.0047aca0
mov eax, dword [esp + 0xc]
add eax, 6
add ebx, 0x60
cmp eax, dword [esi + 0x478]
mov dword [esp + 0xc], eax
jl 0x507700
jmp 0x5097d1
cmp ebx, 1
jl case.0x5070f2.11
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 4]
cmp eax, 0x4d8
jge 0x50781f
mov dword [esp + 0x18], 0x6b
jmp 0x50783a
xor ecx, ecx
cmp eax, 0x846c
setge cl
dec ecx
and ecx, 0xffff846b
add ecx, 0x8000
mov dword [esp + 0x18], ecx
mov edx, ebx
shl edx, 4
lea ecx, [edx + esi + 0x158]
call fcn.00505280
add eax, dword [esp + 0x18]
lea ecx, [esp + 0x10]
push ecx
lea edx, [esp + 0x34]
push edx
push eax
mov eax, dword [ebp + 0x14]
dec ebx
push eax
mov ecx, esi
mov dword [esi + 0x478], ebx
mov dword [esp + 0x20], 1
call fcn.00505fa0
cmp dword [esp + 0x10], 0
je case.0x5070f2.11
mov ecx, dword [ebp + 0x18]
mov edx, dword [ebp + 0x14]
mov eax, dword [esp + 0x34]
push 0
push ecx
mov ecx, dword [esp + 0x38]
push edx
push edi
push eax
push ecx
mov ecx, esi
call fcn.00507010
jmp case.0x5070f2.11
cmp dword [esi + 0x480], 0
je 0x5078d3
cmp ebx, 1
je 0x5078b7
cmp ebx, 5
je 0x5078b7
xor eax, eax
jmp 0x5078bc
mov eax, 1
mov edx, dword [ebp + 0x18]
push edx
push edi
push eax
mov ecx, esi
call fcn.00506200
mov dword [esi + 0x480], 0
cmp dword [esi + 0x484], 0
je 0x5078ef
push 9
mov ecx, edi
call fcn.0047aca0
mov dword [esi + 0x484], 0
mov eax, dword [esi + 0x478]
cmp eax, 4
jne 0x5079fc
mov edx, dword [esp + 0x4c]
push edi
sub esp, 0x10
mov eax, esp
mov ecx, 1
mov dword [eax], ecx
mov ecx, dword [esp + 0x58]
mov dword [eax + 4], ecx
xor ecx, ecx
mov dword [eax + 8], ecx
mov ecx, esi
mov dword [eax + 0xc], edx
call fcn.005053a0
mov ecx, dword [esi + 0x168]
mov edx, dword [esi + 0x16c]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [esi + 0x170]
mov dword [eax + 4], edx
mov edx, dword [esi + 0x174]
mov dword [eax + 8], ecx
mov ecx, esi
mov dword [eax + 0xc], edx
call fcn.005053a0
mov ecx, dword [esi + 0x178]
mov edx, dword [esi + 0x17c]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [esi + 0x180]
mov dword [eax + 4], edx
mov edx, dword [esi + 0x184]
mov dword [eax + 8], ecx
mov ecx, esi
mov dword [eax + 0xc], edx
call fcn.005053a0
mov ecx, dword [esi + 0x188]
mov edx, dword [esi + 0x18c]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [esi + 0x190]
mov dword [eax + 4], edx
mov edx, dword [esi + 0x194]
mov dword [eax + 8], ecx
mov ecx, esi
mov dword [eax + 0xc], edx
call fcn.005053a0
mov ecx, dword [esi + 0x198]
mov edx, dword [esi + 0x19c]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [esi + 0x1a0]
mov dword [eax + 4], edx
mov edx, dword [esi + 0x1a4]
mov dword [eax + 8], ecx
mov ecx, esi
mov dword [eax + 0xc], edx
call fcn.005053a0
push 6
push 0xc
mov ecx, edi
call fcn.0047aca0
mov ecx, eax
call fcn.0047aca0
jmp case.0x508c0e.3075
test eax, eax
jne case.0x508c0e.3075
push 0xe
mov ecx, edi
call fcn.0047aca0
jmp case.0x508c0e.3075
cmp dword [esi + 0x480], 0
je case.0x508c0e.3075
mov eax, dword [ebp + 0x18]
xor ecx, ecx
test ebx, ebx
setg cl
push eax
push edi
push ecx
mov ecx, esi
call fcn.00506200
mov dword [esi + 0x480], 0
jmp case.0x508c0e.3075
cmp dword [esi + 0x480], 0
je 0x5072fa
mov edx, dword [ebp + 0x18]
push edx
push edi
and ebx, 1
push ebx
mov ecx, esi
call fcn.00506200
mov dword [esi + 0x480], 0
jmp 0x5072fa
cmp dword [esi + 0x480], 0
je 0x507a91
mov eax, dword [ebp + 0x18]
push eax
push edi
and ebx, 1
push ebx
mov ecx, esi
call fcn.00506200
mov dword [esi + 0x480], 0
mov eax, dword [esi + 0x478]
test eax, eax
jle 0x507aa6
cdq
sub eax, edx
sar eax, 1
add dword [esi + 0x47c], eax
mov ecx, dword [esi + 0x47c]
add ecx, 7
sar ecx, 3
add dword [esp + 0x14], ecx
jmp case.0x508c0e.3075
cmp dword [esi + 0x480], 0
je 0x507ade
mov edx, dword [ebp + 0x18]
push edx
push edi
and ebx, 1
push ebx
mov ecx, esi
call fcn.00506200
mov dword [esi + 0x480], 0
mov eax, dword [esi + 0x478]
test eax, eax
jle 0x507af3
cdq
sub eax, edx
sar eax, 1
add dword [esi + 0x47c], eax
mov eax, dword [esi + 0x47c]
add eax, 7
sar eax, 3
add dword [esp + 0x14], eax
jmp case.0x508c0e.3075
cmp dword [esi + 0x480], 0
je 0x507b30
mov ecx, dword [ebp + 0x18]
xor edx, edx
cmp ebx, 3
sete dl
push ecx
push edi
mov ecx, esi
push edx
call fcn.00506200
mov dword [esi + 0x480], 0
cmp dword [esi + 0x484], 0
je 0x507b4c
push 9
mov ecx, edi
call fcn.0047aca0
mov dword [esi + 0x484], 0
mov ecx, dword [esi + 0x168]
mov edx, dword [esi + 0x16c]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [esi + 0x170]
mov dword [eax + 4], edx
mov edx, dword [esi + 0x174]
mov dword [eax + 8], ecx
mov ecx, esi
mov dword [eax + 0xc], edx
call fcn.005053a0
mov ecx, dword [esi + 0x178]
mov edx, dword [esi + 0x17c]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [esi + 0x180]
mov dword [eax + 4], edx
mov edx, dword [esi + 0x184]
mov dword [eax + 8], ecx
mov ecx, esi
mov dword [eax + 0xc], edx
call fcn.005053a0
push 0x15
mov ecx, edi
call fcn.0047aca0
jmp case.0x508c0e.3075
cmp dword [esi + 0x480], 0
je 0x507be2
mov eax, dword [ebp + 0x18]
xor ecx, ecx
cmp ebx, 2
sete cl
push eax
push edi
push ecx
mov ecx, esi
call fcn.00506200
mov dword [esi + 0x480], 0
cmp dword [esi + 0x484], 0
je 0x507bfe
push 9
mov ecx, edi
call fcn.0047aca0
mov dword [esi + 0x484], 0
mov edx, dword [esi + 0x168]
mov ecx, dword [esi + 0x16c]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [esi + 0x170]
mov dword [eax + 4], ecx
mov ecx, dword [esi + 0x174]
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
push 0x16
mov ecx, edi
call fcn.0047aca0
jmp case.0x508c0e.3075
add ebx, 0xfffffff8
mov dword [esp + 0xc], 0
js 0x507d52
lea ebx, [esi + 0x178]
mov ecx, dword [ebx - 0x10]
mov edx, dword [ebx - 0xc]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [ebx - 8]
mov dword [eax + 4], edx
mov edx, dword [ebx - 4]
mov dword [eax + 8], ecx
mov ecx, esi
mov dword [eax + 0xc], edx
call fcn.005053a0
mov ecx, dword [ebx]
mov edx, dword [ebx + 4]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [ebx + 8]
mov dword [eax + 4], edx
mov edx, dword [ebx + 0xc]
mov dword [eax + 8], ecx
mov ecx, esi
mov dword [eax + 0xc], edx
call fcn.005053a0
mov ecx, dword [ebx + 0x10]
mov edx, dword [ebx + 0x14]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [ebx + 0x18]
mov dword [eax + 4], edx
mov edx, dword [ebx + 0x1c]
mov dword [eax + 8], ecx
mov ecx, esi
mov dword [eax + 0xc], edx
call fcn.005053a0
mov ecx, dword [ebx + 0x20]
mov edx, dword [ebx + 0x24]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [ebx + 0x28]
mov dword [eax + 4], edx
mov edx, dword [ebx + 0x2c]
mov dword [eax + 8], ecx
mov ecx, esi
mov dword [eax + 0xc], edx
call fcn.005053a0
mov ecx, dword [ebx + 0x30]
mov edx, dword [ebx + 0x34]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [ebx + 0x38]
mov dword [eax + 4], edx
mov edx, dword [ebx + 0x3c]
mov dword [eax + 8], ecx
mov ecx, esi
mov dword [eax + 0xc], edx
call fcn.005053a0
mov ecx, dword [ebx + 0x40]
mov edx, dword [ebx + 0x44]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [ebx + 0x48]
mov dword [eax + 4], edx
mov edx, dword [ebx + 0x4c]
mov dword [eax + 8], ecx
mov ecx, esi
mov dword [eax + 0xc], edx
call fcn.005053a0
push 8
mov ecx, edi
call fcn.0047aca0
mov eax, dword [esp + 0xc]
mov ecx, dword [esi + 0x478]
add eax, 6
sub ecx, 8
add ebx, 0x60
cmp eax, ecx
mov dword [esp + 0xc], eax
jle 0x507c53
mov eax, dword [esp + 0xc]
shl eax, 4
mov edx, dword [eax + esi + 0x168]
mov ecx, dword [eax + esi + 0x16c]
lea ebx, [eax + esi]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [ebx + 0x170]
mov dword [eax + 4], ecx
mov ecx, dword [ebx + 0x174]
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
mov edx, dword [ebx + 0x178]
lea eax, [ebx + 0x178]
push edi
sub esp, 0x10
mov ecx, esp
mov dword [ecx], edx
mov edx, dword [eax + 4]
mov dword [ecx + 4], edx
mov edx, dword [eax + 8]
mov eax, dword [eax + 0xc]
mov dword [ecx + 8], edx
mov dword [ecx + 0xc], eax
mov ecx, esi
call fcn.005053a0
push 5
jmp 0x5097ca
add ebx, 0xfffffff8
mov dword [esp + 0xc], 0
js 0x507e40
lea ebx, [esi + 0x178]
mov ecx, dword [ebx - 0x10]
mov edx, dword [ebx - 0xc]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [ebx - 8]
mov dword [eax + 4], edx
mov edx, dword [ebx - 4]
mov dword [eax + 8], ecx
mov ecx, esi
mov dword [eax + 0xc], edx
call fcn.005053a0
mov ecx, dword [ebx]
mov edx, dword [ebx + 4]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [ebx + 8]
mov dword [eax + 4], edx
mov edx, dword [ebx + 0xc]
mov dword [eax + 8], ecx
mov ecx, esi
mov dword [eax + 0xc], edx
call fcn.005053a0
push 5
mov ecx, edi
call fcn.0047aca0
mov eax, dword [esp + 0xc]
mov ecx, dword [esi + 0x478]
add eax, 2
sub ecx, 8
add ebx, 0x20
cmp eax, ecx
mov dword [esp + 0xc], eax
jle 0x507dd5
mov eax, dword [esp + 0xc]
shl eax, 4
mov edx, dword [eax + esi + 0x168]
mov ecx, dword [eax + esi + 0x16c]
lea ebx, [eax + esi]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [ebx + 0x170]
mov dword [eax + 4], ecx
mov ecx, dword [ebx + 0x174]
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
mov edx, dword [ebx + 0x178]
mov ecx, dword [ebx + 0x17c]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [ebx + 0x180]
mov dword [eax + 4], ecx
mov ecx, dword [ebx + 0x184]
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
mov edx, dword [ebx + 0x188]
mov ecx, dword [ebx + 0x18c]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [ebx + 0x190]
mov dword [eax + 4], ecx
mov ecx, dword [ebx + 0x194]
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
mov edx, dword [ebx + 0x198]
mov ecx, dword [ebx + 0x19c]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [ebx + 0x1a0]
mov dword [eax + 4], ecx
mov ecx, dword [ebx + 0x1a4]
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
mov edx, dword [ebx + 0x1a8]
mov ecx, dword [ebx + 0x1ac]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [ebx + 0x1b0]
mov dword [eax + 4], ecx
mov ecx, dword [ebx + 0x1b4]
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
lea eax, [ebx + 0x1b8]
mov edx, dword [eax]
push edi
sub esp, 0x10
mov ecx, esp
mov dword [ecx], edx
mov edx, dword [eax + 4]
mov dword [ecx + 4], edx
mov edx, dword [eax + 8]
mov eax, dword [eax + 0xc]
mov dword [ecx + 8], edx
mov dword [ecx + 0xc], eax
jmp 0x5097c1
mov ecx, ebx
and ecx, 0x80000001
jns 0x507f72
dec ecx
or ecx, 0xfffffffe
inc ecx
cmp ecx, 1
jne 0x5080ab
cmp ebx, 5
jl 0x5080ab
mov edx, dword [esi + 0x168]
mov ecx, dword [esi + 0x16c]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [esi + 0x170]
mov dword [eax + 4], ecx
mov ecx, dword [esi + 0x174]
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
mov edx, dword [esi + 0x178]
mov ecx, dword [esi + 0x17c]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [esi + 0x180]
mov dword [eax + 4], ecx
mov ecx, dword [esi + 0x184]
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
mov edx, dword [esi + 0x188]
mov ecx, dword [esi + 0x18c]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [esi + 0x190]
mov dword [eax + 4], ecx
mov ecx, dword [esi + 0x194]
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
mov edx, dword [esi + 0x198]
mov ecx, dword [esi + 0x19c]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [esi + 0x1a0]
mov dword [eax + 4], ecx
mov ecx, dword [esi + 0x1a4]
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
mov edx, dword [esp + 0x44]
push edi
sub esp, 0x10
mov eax, esp
mov ecx, 1
mov dword [eax], ecx
xor ecx, ecx
mov dword [eax + 4], edx
mov dword [eax + 8], ecx
mov ecx, dword [esp + 0x60]
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
mov edx, dword [esi + 0x1a8]
mov ecx, dword [esi + 0x1ac]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [esi + 0x1b0]
mov dword [eax + 4], ecx
mov ecx, dword [esi + 0x1b4]
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
push 8
mov ecx, edi
call fcn.0047aca0
mov eax, 5
jmp 0x5080ad
xor eax, eax
lea ecx, [eax + 3]
cmp ecx, dword [esi + 0x478]
jge 0x5097d1
shl eax, 4
mov dword [esp + 0x18], ecx
lea ebx, [eax + esi + 0x178]
lea ebx, [ebx]
mov edx, dword [esp + 0x44]
push edi
sub esp, 0x10
mov eax, esp
mov ecx, 1
mov dword [eax], ecx
xor ecx, ecx
mov dword [eax + 4], edx
mov dword [eax + 8], ecx
mov ecx, dword [esp + 0x60]
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
mov edx, dword [ebx - 0x10]
mov ecx, dword [ebx - 0xc]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [ebx - 8]
mov dword [eax + 4], ecx
mov ecx, dword [ebx - 4]
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
mov edx, dword [ebx]
mov ecx, dword [ebx + 4]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [ebx + 8]
mov dword [eax + 4], ecx
mov ecx, dword [ebx + 0xc]
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
mov edx, dword [ebx + 0x10]
mov ecx, dword [ebx + 0x14]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [ebx + 0x18]
mov dword [eax + 4], ecx
mov ecx, dword [ebx + 0x1c]
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
mov edx, dword [esp + 0x44]
push edi
sub esp, 0x10
mov eax, esp
mov ecx, 1
mov dword [eax], ecx
xor ecx, ecx
mov dword [eax + 4], edx
mov dword [eax + 8], ecx
mov ecx, dword [esp + 0x60]
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
mov edx, dword [ebx + 0x20]
mov ecx, dword [ebx + 0x24]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [ebx + 0x28]
mov dword [eax + 4], ecx
mov ecx, dword [ebx + 0x2c]
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
push 8
mov ecx, edi
call fcn.0047aca0
mov eax, dword [esp + 0x18]
add eax, 4
add ebx, 0x40
cmp eax, dword [esi + 0x478]
mov dword [esp + 0x18], eax
jl 0x5080d0
jmp 0x5097d1
mov edx, ebx
and edx, 0x80000001
jns 0x5081e4
dec edx
or edx, 0xfffffffe
inc edx
cmp edx, 1
jne 0x50831d
cmp ebx, 5
jl 0x50831d
mov ecx, dword [esi + 0x178]
mov edx, dword [esi + 0x17c]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [esi + 0x180]
mov dword [eax + 4], edx
mov edx, dword [esi + 0x184]
mov dword [eax + 8], ecx
mov ecx, esi
mov dword [eax + 0xc], edx
call fcn.005053a0
mov ecx, dword [esi + 0x168]
mov edx, dword [esi + 0x16c]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [esi + 0x170]
mov dword [eax + 4], edx
mov edx, dword [esi + 0x174]
mov dword [eax + 8], ecx
mov ecx, esi
mov dword [eax + 0xc], edx
call fcn.005053a0
mov ecx, dword [esi + 0x188]
mov edx, dword [esi + 0x18c]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [esi + 0x190]
mov dword [eax + 4], edx
mov edx, dword [esi + 0x194]
mov dword [eax + 8], ecx
mov ecx, esi
mov dword [eax + 0xc], edx
call fcn.005053a0
mov ecx, dword [esi + 0x198]
mov edx, dword [esi + 0x19c]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [esi + 0x1a0]
mov dword [eax + 4], edx
mov edx, dword [esi + 0x1a4]
mov dword [eax + 8], ecx
mov ecx, esi
mov dword [eax + 0xc], edx
call fcn.005053a0
mov ecx, dword [esi + 0x1a8]
mov edx, dword [esi + 0x1ac]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [esi + 0x1b0]
mov dword [eax + 4], edx
mov edx, dword [esi + 0x1b4]
mov dword [eax + 8], ecx
mov ecx, esi
mov dword [eax + 0xc], edx
call fcn.005053a0
mov edx, dword [esp + 0x4c]
push edi
sub esp, 0x10
mov eax, esp
mov ecx, 1
mov dword [eax], ecx
mov ecx, dword [esp + 0x58]
mov dword [eax + 4], ecx
xor ecx, ecx
mov dword [eax + 8], ecx
mov ecx, esi
mov dword [eax + 0xc], edx
call fcn.005053a0
push 8
mov ecx, edi
call fcn.0047aca0
mov eax, 5
jmp 0x50831f
xor eax, eax
lea ecx, [eax + 3]
cmp ecx, dword [esi + 0x478]
jge 0x5097d1
shl eax, 4
mov dword [esp + 0x18], ecx
lea ebx, [eax + esi + 0x178]
lea esp, [esp]
mov ecx, dword [ebx - 0x10]
mov edx, dword [ebx - 0xc]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [ebx - 8]
mov dword [eax + 4], edx
mov edx, dword [ebx - 4]
mov dword [eax + 8], ecx
mov ecx, esi
mov dword [eax + 0xc], edx
call fcn.005053a0
mov edx, dword [esp + 0x4c]
push edi
sub esp, 0x10
mov eax, esp
mov ecx, 1
mov dword [eax], ecx
mov ecx, dword [esp + 0x58]
mov dword [eax + 4], ecx
xor ecx, ecx
mov dword [eax + 8], ecx
mov ecx, esi
mov dword [eax + 0xc], edx
call fcn.005053a0
mov ecx, dword [ebx]
mov edx, dword [ebx + 4]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [ebx + 8]
mov dword [eax + 4], edx
mov edx, dword [ebx + 0xc]
mov dword [eax + 8], ecx
mov ecx, esi
mov dword [eax + 0xc], edx
call fcn.005053a0
mov ecx, dword [ebx + 0x10]
mov edx, dword [ebx + 0x14]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [ebx + 0x18]
mov dword [eax + 4], edx
mov edx, dword [ebx + 0x1c]
mov dword [eax + 8], ecx
mov ecx, esi
mov dword [eax + 0xc], edx
call fcn.005053a0
mov ecx, dword [ebx + 0x20]
mov edx, dword [ebx + 0x24]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [ebx + 0x28]
mov dword [eax + 4], edx
mov edx, dword [ebx + 0x2c]
mov dword [eax + 8], ecx
mov ecx, esi
mov dword [eax + 0xc], edx
call fcn.005053a0
mov edx, dword [esp + 0x4c]
push edi
sub esp, 0x10
mov eax, esp
mov ecx, 1
mov dword [eax], ecx
mov ecx, dword [esp + 0x58]
mov dword [eax + 4], ecx
xor ecx, ecx
mov dword [eax + 8], ecx
mov ecx, esi
mov dword [eax + 0xc], edx
call fcn.005053a0
push 8
mov ecx, edi
call fcn.0047aca0
mov eax, dword [esp + 0x18]
add eax, 4
add ebx, 0x40
cmp eax, dword [esi + 0x478]
mov dword [esp + 0x18], eax
jl 0x508340
jmp 0x5097d1
cmp ebx, 1
jl case.0x5070f2.11
mov eax, ebx
shl eax, 4
lea ecx, [eax + esi + 0x158]
call fcn.00505280
add eax, dword [esi + 0x15c]
lea ecx, [esp + 0x10]
push ecx
lea edx, [esp + 0x34]
push edx
push eax
lea eax, [esi + 0x58]
dec ebx
push eax
mov ecx, esi
mov dword [esi + 0x478], ebx
mov dword [esp + 0x20], 1
call fcn.00505fa0
cmp dword [esp + 0x10], 0
je case.0x5070f2.11
mov ecx, dword [ebp + 0x18]
mov edx, dword [ebp + 0x14]
mov eax, dword [esp + 0x34]
push 0
push ecx
mov ecx, dword [esp + 0x38]
push edx
push edi
push eax
push ecx
mov ecx, esi
call fcn.00507010
jmp case.0x5070f2.11
cmp ebx, 3
mov dword [esp + 0xc], 0
jle 0x50863d
lea ebx, [esi + 0x178]
lea ecx, [ecx]
mov edx, dword [esi + 0x478]
sub edx, 5
cmp dword [esp + 0xc], edx
je 0x50863d
mov eax, dword [esp + 0xc]
and eax, 0x80000007
jns 0x5084f3
dec eax
or eax, 0xfffffff8
inc eax
mov ecx, dword [ebx - 0x10]
mov edx, dword [ebx - 0xc]
push edi
jne 0x50858f
sub esp, 0x10
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [ebx - 8]
mov dword [eax + 4], edx
mov edx, dword [ebx - 4]
mov dword [eax + 8], ecx
mov ecx, esi
mov dword [eax + 0xc], edx
call fcn.005053a0
mov ecx, dword [ebx]
mov edx, dword [ebx + 4]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [ebx + 8]
mov dword [eax + 4], edx
mov edx, dword [ebx + 0xc]
mov dword [eax + 8], ecx
mov ecx, esi
mov dword [eax + 0xc], edx
call fcn.005053a0
mov ecx, dword [ebx + 0x10]
mov edx, dword [ebx + 0x14]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [ebx + 0x18]
mov dword [eax + 4], edx
mov edx, dword [ebx + 0x1c]
mov dword [eax + 8], ecx
mov ecx, esi
mov dword [eax + 0xc], edx
call fcn.005053a0
mov ecx, dword [ebx + 0x20]
mov edx, dword [ebx + 0x24]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [ebx + 0x28]
mov dword [eax + 4], edx
mov edx, dword [ebx + 0x2c]
mov dword [eax + 8], ecx
mov ecx, esi
mov dword [eax + 0xc], edx
call fcn.005053a0
push 0x1e
jmp 0x508619
sub esp, 0x10
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [ebx - 8]
mov dword [eax + 4], edx
mov edx, dword [ebx - 4]
mov dword [eax + 8], ecx
mov ecx, esi
mov dword [eax + 0xc], edx
call fcn.005053a0
mov ecx, dword [ebx]
mov edx, dword [ebx + 4]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [ebx + 8]
mov dword [eax + 4], edx
mov edx, dword [ebx + 0xc]
mov dword [eax + 8], ecx
mov ecx, esi
mov dword [eax + 0xc], edx
call fcn.005053a0
mov ecx, dword [ebx + 0x10]
mov edx, dword [ebx + 0x14]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [ebx + 0x18]
mov dword [eax + 4], edx
mov edx, dword [ebx + 0x1c]
mov dword [eax + 8], ecx
mov ecx, esi
mov dword [eax + 0xc], edx
call fcn.005053a0
mov ecx, dword [ebx + 0x20]
mov edx, dword [ebx + 0x24]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [ebx + 0x28]
mov dword [eax + 4], edx
mov edx, dword [ebx + 0x2c]
mov dword [eax + 8], ecx
mov ecx, esi
mov dword [eax + 0xc], edx
call fcn.005053a0
push 0x1f
mov ecx, edi
call fcn.0047aca0
mov eax, dword [esp + 0xc]
add eax, 4
mov dword [esp + 0xc], eax
add eax, 3
add ebx, 0x40
cmp eax, dword [esi + 0x478]
jl 0x5084d0
mov eax, dword [esi + 0x478]
mov ebx, dword [esp + 0xc]
sub eax, 5
cmp ebx, eax
jne 0x5097d1
mov ecx, ebx
and ecx, 0x80000007
jns 0x508661
dec ecx
or ecx, 0xfffffff8
inc ecx
push edi
jne 0x508760
mov edx, dword [esp + 0x48]
sub esp, 0x10
mov eax, esp
mov ecx, 1
mov dword [eax], ecx
xor ecx, ecx
mov dword [eax + 4], edx
mov dword [eax + 8], ecx
mov ecx, dword [esp + 0x60]
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
push edi
shl ebx, 4
mov edx, dword [ebx + esi + 0x168]
mov ecx, dword [ebx + esi + 0x16c]
add ebx, esi
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [ebx + 0x170]
mov dword [eax + 4], ecx
mov ecx, dword [ebx + 0x174]
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
mov edx, dword [ebx + 0x178]
mov ecx, dword [ebx + 0x17c]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [ebx + 0x180]
mov dword [eax + 4], ecx
mov ecx, dword [ebx + 0x184]
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
mov edx, dword [ebx + 0x188]
mov ecx, dword [ebx + 0x18c]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [ebx + 0x190]
mov dword [eax + 4], ecx
mov ecx, dword [ebx + 0x194]
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
mov edx, dword [ebx + 0x198]
mov ecx, dword [ebx + 0x19c]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [ebx + 0x1a0]
mov dword [eax + 4], ecx
mov ecx, dword [ebx + 0x1a4]
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
lea eax, [ebx + 0x1a8]
jmp 0x507f42
shl ebx, 4
mov ecx, dword [ebx + esi + 0x168]
mov edx, dword [ebx + esi + 0x16c]
add ebx, esi
sub esp, 0x10
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [ebx + 0x170]
mov dword [eax + 4], edx
mov edx, dword [ebx + 0x174]
mov dword [eax + 8], ecx
mov ecx, esi
mov dword [eax + 0xc], edx
call fcn.005053a0
mov edx, dword [esp + 0x4c]
push edi
sub esp, 0x10
mov eax, esp
mov ecx, 1
mov dword [eax], ecx
mov ecx, dword [esp + 0x58]
mov dword [eax + 4], ecx
xor ecx, ecx
mov dword [eax + 8], ecx
mov ecx, esi
mov dword [eax + 0xc], edx
call fcn.005053a0
mov ecx, dword [ebx + 0x178]
mov edx, dword [ebx + 0x17c]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [ebx + 0x180]
mov dword [eax + 4], edx
mov edx, dword [ebx + 0x184]
mov dword [eax + 8], ecx
mov ecx, esi
mov dword [eax + 0xc], edx
call fcn.005053a0
mov ecx, dword [ebx + 0x188]
mov edx, dword [ebx + 0x18c]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [ebx + 0x190]
mov dword [eax + 4], edx
mov edx, dword [ebx + 0x194]
mov dword [eax + 8], ecx
mov ecx, esi
mov dword [eax + 0xc], edx
call fcn.005053a0
mov ecx, dword [ebx + 0x1a8]
mov edx, dword [ebx + 0x1ac]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [ebx + 0x1b0]
mov dword [eax + 4], edx
mov edx, dword [ebx + 0x1b4]
mov dword [eax + 8], ecx
mov ecx, esi
mov dword [eax + 0xc], edx
call fcn.005053a0
lea eax, [ebx + 0x198]
jmp 0x507f42
cmp ebx, 3
mov dword [esp + 0xc], 0
jle 0x5089de
lea ebx, [esi + 0x178]
nop
mov ecx, dword [esi + 0x478]
sub ecx, 5
cmp dword [esp + 0xc], ecx
je 0x5089de
mov edx, dword [esp + 0xc]
and edx, 0x80000007
jns 0x508894
dec edx
or edx, 0xfffffff8
inc edx
mov ecx, dword [ebx - 0x10]
mov edx, dword [ebx - 0xc]
push edi
jne 0x508930
sub esp, 0x10
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [ebx - 8]
mov dword [eax + 4], edx
mov edx, dword [ebx - 4]
mov dword [eax + 8], ecx
mov ecx, esi
mov dword [eax + 0xc], edx
call fcn.005053a0
mov ecx, dword [ebx]
mov edx, dword [ebx + 4]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [ebx + 8]
mov dword [eax + 4], edx
mov edx, dword [ebx + 0xc]
mov dword [eax + 8], ecx
mov ecx, esi
mov dword [eax + 0xc], edx
call fcn.005053a0
mov ecx, dword [ebx + 0x10]
mov edx, dword [ebx + 0x14]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [ebx + 0x18]
mov dword [eax + 4], edx
mov edx, dword [ebx + 0x1c]
mov dword [eax + 8], ecx
mov ecx, esi
mov dword [eax + 0xc], edx
call fcn.005053a0
mov ecx, dword [ebx + 0x20]
mov edx, dword [ebx + 0x24]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [ebx + 0x28]
mov dword [eax + 4], edx
mov edx, dword [ebx + 0x2c]
mov dword [eax + 8], ecx
mov ecx, esi
mov dword [eax + 0xc], edx
call fcn.005053a0
push 0x1f
jmp 0x5089ba
sub esp, 0x10
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [ebx - 8]
mov dword [eax + 4], edx
mov edx, dword [ebx - 4]
mov dword [eax + 8], ecx
mov ecx, esi
mov dword [eax + 0xc], edx
call fcn.005053a0
mov ecx, dword [ebx]
mov edx, dword [ebx + 4]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [ebx + 8]
mov dword [eax + 4], edx
mov edx, dword [ebx + 0xc]
mov dword [eax + 8], ecx
mov ecx, esi
mov dword [eax + 0xc], edx
call fcn.005053a0
mov ecx, dword [ebx + 0x10]
mov edx, dword [ebx + 0x14]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [ebx + 0x18]
mov dword [eax + 4], edx
mov edx, dword [ebx + 0x1c]
mov dword [eax + 8], ecx
mov ecx, esi
mov dword [eax + 0xc], edx
call fcn.005053a0
mov ecx, dword [ebx + 0x20]
mov edx, dword [ebx + 0x24]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [ebx + 0x28]
mov dword [eax + 4], edx
mov edx, dword [ebx + 0x2c]
mov dword [eax + 8], ecx
mov ecx, esi
mov dword [eax + 0xc], edx
call fcn.005053a0
push 0x1e
mov ecx, edi
call fcn.0047aca0
mov eax, dword [esp + 0xc]
add eax, 4
mov dword [esp + 0xc], eax
add eax, 3
add ebx, 0x40
cmp eax, dword [esi + 0x478]
jl 0x508870
mov eax, dword [esi + 0x478]
mov ebx, dword [esp + 0xc]
sub eax, 5
cmp ebx, eax
jne 0x5097d1
mov ecx, ebx
and ecx, 0x80000007
jns 0x508a02
dec ecx
or ecx, 0xfffffff8
inc ecx
push edi
jne 0x508b01
shl ebx, 4
mov edx, dword [ebx + esi + 0x168]
mov ecx, dword [ebx + esi + 0x16c]
add ebx, esi
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [ebx + 0x170]
mov dword [eax + 4], ecx
mov ecx, dword [ebx + 0x174]
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
mov edx, dword [esp + 0x44]
push edi
sub esp, 0x10
mov eax, esp
mov ecx, 1
mov dword [eax], ecx
xor ecx, ecx
mov dword [eax + 4], edx
mov dword [eax + 8], ecx
mov ecx, dword [esp + 0x60]
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
mov edx, dword [ebx + 0x178]
mov ecx, dword [ebx + 0x17c]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [ebx + 0x180]
mov dword [eax + 4], ecx
mov ecx, dword [ebx + 0x184]
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
mov edx, dword [ebx + 0x188]
mov ecx, dword [ebx + 0x18c]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [ebx + 0x190]
mov dword [eax + 4], ecx
mov ecx, dword [ebx + 0x194]
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
mov edx, dword [ebx + 0x1a8]
mov ecx, dword [ebx + 0x1ac]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [ebx + 0x1b0]
mov dword [eax + 4], ecx
mov ecx, dword [ebx + 0x1b4]
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
lea eax, [ebx + 0x198]
jmp 0x507f42
mov edx, dword [esp + 0x50]
sub esp, 0x10
mov eax, esp
mov ecx, 1
mov dword [eax], ecx
mov ecx, dword [esp + 0x58]
mov dword [eax + 4], ecx
xor ecx, ecx
mov dword [eax + 8], ecx
mov ecx, esi
mov dword [eax + 0xc], edx
call fcn.005053a0
push edi
shl ebx, 4
mov ecx, dword [ebx + esi + 0x168]
mov edx, dword [ebx + esi + 0x16c]
add ebx, esi
sub esp, 0x10
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [ebx + 0x170]
mov dword [eax + 4], edx
mov edx, dword [ebx + 0x174]
mov dword [eax + 8], ecx
mov ecx, esi
mov dword [eax + 0xc], edx
call fcn.005053a0
mov ecx, dword [ebx + 0x178]
mov edx, dword [ebx + 0x17c]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [ebx + 0x180]
mov dword [eax + 4], edx
mov edx, dword [ebx + 0x184]
mov dword [eax + 8], ecx
mov ecx, esi
mov dword [eax + 0xc], edx
call fcn.005053a0
mov ecx, dword [ebx + 0x188]
mov edx, dword [ebx + 0x18c]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [ebx + 0x190]
mov dword [eax + 4], edx
mov edx, dword [ebx + 0x194]
mov dword [eax + 8], ecx
mov ecx, esi
mov dword [eax + 0xc], edx
call fcn.005053a0
mov ecx, dword [ebx + 0x198]
mov edx, dword [ebx + 0x19c]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [ebx + 0x1a0]
mov dword [eax + 4], edx
mov edx, dword [ebx + 0x1a4]
mov dword [eax + 8], ecx
mov ecx, esi
mov dword [eax + 0xc], edx
call fcn.005053a0
lea eax, [ebx + 0x1a8]
jmp 0x507f42
sub eax, 0xc03
cmp eax, 0x22
ja case.0x508c0e.3075
movzx ecx, byte [eax + 0x5098d8]
jmp dword [ecx*4 + 0x5098bc]
cmp ebx, 2
jl case.0x5070f2.11
mov edx, ebx
shl edx, 4
lea eax, [edx + esi]
lea ecx, [eax + 0x148]
mov dword [esp + 0x18], eax
call fcn.00505280
mov ecx, dword [esp + 0x18]
add ecx, 0x158
mov dword [esp + 0xc], eax
call fcn.00505280
mov edx, dword [esp + 0xc]
dec ebx
mov dword [esi + 0x478], ebx
shl ebx, 4
mov dword [ebx + esi + 0x158], 3
mov ecx, dword [esi + 0x478]
add ecx, 0x16
shl ecx, 4
mov dword [ecx + esi], edx
mov ecx, dword [esi + 0x478]
shl ecx, 4
mov dword [ecx + esi + 0x164], eax
jmp case.0x5070f2.11
cmp ebx, 7
jne 0x5097d1
mov edx, dword [esi + 0x168]
mov ecx, dword [esi + 0x16c]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [esi + 0x170]
mov dword [eax + 4], ecx
mov ecx, dword [esi + 0x174]
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
mov edx, dword [esp + 0x44]
push edi
sub esp, 0x10
mov eax, esp
mov ecx, 1
mov dword [eax], ecx
xor ecx, ecx
mov dword [eax + 4], edx
mov dword [eax + 8], ecx
mov ecx, dword [esp + 0x60]
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
mov edx, dword [esi + 0x178]
mov ecx, dword [esi + 0x17c]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [esi + 0x180]
mov dword [eax + 4], ecx
mov ecx, dword [esi + 0x184]
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
mov edx, dword [esi + 0x188]
mov ecx, dword [esi + 0x18c]
lea ebx, [esi + 0x188]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [ebx + 8]
mov dword [eax + 4], ecx
mov ecx, dword [ebx + 0xc]
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
mov edx, dword [esi + 0x198]
mov ecx, dword [esi + 0x19c]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [esi + 0x1a0]
mov dword [eax + 4], ecx
mov ecx, dword [esi + 0x1a4]
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
mov edx, dword [esp + 0x44]
push edi
sub esp, 0x10
mov eax, esp
mov ecx, 1
mov dword [eax], ecx
xor ecx, ecx
mov dword [eax + 4], edx
mov dword [eax + 8], ecx
mov ecx, dword [esp + 0x60]
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
push 8
mov ecx, edi
call fcn.0047aca0
mov edx, dword [esi + 0x1a8]
mov ecx, dword [esi + 0x1ac]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [esi + 0x1b0]
mov dword [eax + 4], ecx
mov ecx, dword [esi + 0x1b4]
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
mov edx, dword [esp + 0x44]
push edi
sub esp, 0x10
mov eax, esp
mov ecx, 1
mov dword [eax], ecx
xor ecx, ecx
mov dword [eax + 4], edx
mov dword [eax + 8], ecx
mov ecx, dword [esp + 0x60]
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
mov edx, dword [esi + 0x1b8]
mov ecx, dword [esi + 0x1bc]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [esi + 0x1c0]
mov dword [eax + 4], ecx
mov ecx, dword [esi + 0x1c4]
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
mov eax, dword [ebx]
cmp eax, 1
jne 0x508e3f
mov ecx, dword [esi + 0x190]
mov edx, eax
neg ecx
jmp 0x508e70
cmp eax, 3
jne 0x508e5a
mov ecx, dword [esi + 0x190]
mov edx, eax
mov eax, dword [esi + 0x194]
neg ecx
mov dword [esp + 0x4c], eax
jmp 0x508e70
mov ecx, ebx
mov edx, 2
call fcn.005052b0
fchs
fstp qword [esp + 0x48]
mov ecx, dword [esp + 0x48]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [esp + 0x58]
mov dword [eax + 4], edx
mov dword [eax + 8], ecx
mov ecx, dword [esp + 0x60]
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
mov edx, dword [esi + 0x1c8]
mov ecx, dword [esi + 0x1cc]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [esi + 0x1d0]
mov dword [eax + 4], ecx
mov ecx, dword [esi + 0x1d4]
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
mov edx, dword [esp + 0x44]
push edi
sub esp, 0x10
mov eax, esp
mov ecx, 1
mov dword [eax], ecx
xor ecx, ecx
mov dword [eax + 4], edx
mov dword [eax + 8], ecx
mov ecx, dword [esp + 0x60]
mov dword [eax + 0xc], ecx
jmp 0x5097c1
cmp ebx, 0xd
jne 0x5097d1
mov edx, dword [esi + 0x168]
mov ecx, dword [esi + 0x16c]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [esi + 0x170]
mov dword [eax + 4], ecx
mov ecx, dword [esi + 0x174]
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
mov edx, dword [esi + 0x178]
mov ecx, dword [esi + 0x17c]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [esi + 0x180]
mov dword [eax + 4], ecx
mov ecx, dword [esi + 0x184]
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
mov edx, dword [esi + 0x188]
mov ecx, dword [esi + 0x18c]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [esi + 0x190]
mov dword [eax + 4], ecx
mov ecx, dword [esi + 0x194]
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
mov edx, dword [esi + 0x198]
mov ecx, dword [esi + 0x19c]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [esi + 0x1a0]
mov dword [eax + 4], ecx
mov ecx, dword [esi + 0x1a4]
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
mov edx, dword [esi + 0x1a8]
mov ecx, dword [esi + 0x1ac]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [esi + 0x1b0]
mov dword [eax + 4], ecx
mov ecx, dword [esi + 0x1b4]
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
mov edx, dword [esi + 0x1b8]
mov ecx, dword [esi + 0x1bc]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [esi + 0x1c0]
mov dword [eax + 4], ecx
mov ecx, dword [esi + 0x1c4]
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
push 8
mov ecx, edi
call fcn.0047aca0
mov edx, dword [esi + 0x1c8]
mov ecx, dword [esi + 0x1cc]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [esi + 0x1d0]
mov dword [eax + 4], ecx
mov ecx, dword [esi + 0x1d4]
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
mov edx, dword [esi + 0x1d8]
mov ecx, dword [esi + 0x1dc]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [esi + 0x1e0]
mov dword [eax + 4], ecx
mov ecx, dword [esi + 0x1e4]
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
mov edx, dword [esi + 0x1e8]
mov ecx, dword [esi + 0x1ec]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [esi + 0x1f0]
mov dword [eax + 4], ecx
mov ecx, dword [esi + 0x1f4]
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
mov edx, dword [esi + 0x1f8]
mov ecx, dword [esi + 0x1fc]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [esi + 0x200]
mov dword [eax + 4], ecx
mov ecx, dword [esi + 0x204]
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
mov edx, dword [esi + 0x208]
mov ecx, dword [esi + 0x20c]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [esi + 0x210]
mov dword [eax + 4], ecx
mov ecx, dword [esi + 0x214]
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
mov edx, dword [esi + 0x218]
mov ecx, dword [esi + 0x21c]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [esi + 0x220]
mov dword [eax + 4], ecx
mov ecx, dword [esi + 0x224]
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
jmp 0x5097c1
cmp ebx, 9
jne 0x5097d1
mov edx, dword [esi + 0x168]
mov ecx, dword [esi + 0x16c]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [esi + 0x170]
mov dword [eax + 4], ecx
mov ecx, dword [esi + 0x174]
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
mov edx, dword [esi + 0x178]
mov ecx, dword [esi + 0x17c]
lea ebx, [esi + 0x178]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [ebx + 8]
mov dword [eax + 4], ecx
mov ecx, dword [ebx + 0xc]
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
mov edx, dword [esi + 0x188]
mov ecx, dword [esi + 0x18c]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [esi + 0x190]
mov dword [eax + 4], ecx
mov ecx, dword [esi + 0x194]
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
mov edx, dword [esi + 0x198]
mov ecx, dword [esi + 0x19c]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [esi + 0x1a0]
mov dword [eax + 4], ecx
mov ecx, dword [esi + 0x1a4]
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
mov edx, dword [esi + 0x1a8]
mov ecx, dword [esi + 0x1ac]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [esi + 0x1b0]
mov dword [eax + 4], ecx
mov ecx, dword [esi + 0x1b4]
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
mov edx, dword [esp + 0x44]
push edi
sub esp, 0x10
mov eax, esp
mov ecx, 1
mov dword [eax], ecx
xor ecx, ecx
mov dword [eax + 4], edx
mov dword [eax + 8], ecx
mov ecx, dword [esp + 0x60]
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
push 8
mov ecx, edi
call fcn.0047aca0
mov edx, dword [esi + 0x1b8]
mov ecx, dword [esi + 0x1bc]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [esi + 0x1c0]
mov dword [eax + 4], ecx
mov ecx, dword [esi + 0x1c4]
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
mov edx, dword [esp + 0x44]
push edi
sub esp, 0x10
mov eax, esp
mov ecx, 1
mov dword [eax], ecx
xor ecx, ecx
mov dword [eax + 4], edx
mov dword [eax + 8], ecx
mov ecx, dword [esp + 0x60]
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
mov edx, dword [esi + 0x1c8]
mov ecx, dword [esi + 0x1cc]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [esi + 0x1d0]
mov dword [eax + 4], ecx
mov ecx, dword [esi + 0x1d4]
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
mov edx, dword [esi + 0x1d8]
mov ecx, dword [esi + 0x1dc]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [esi + 0x1e0]
mov dword [eax + 4], ecx
mov ecx, dword [esi + 0x1e4]
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
mov edx, dword [esi + 0x1e8]
mov ecx, dword [esi + 0x1ec]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [esi + 0x1f0]
mov dword [eax + 4], ecx
mov ecx, dword [esi + 0x1f4]
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
cmp dword [ebx], 1
jne 0x509377
cmp dword [esi + 0x198], 1
jne 0x509377
cmp dword [esi + 0x1d8], 1
jne 0x509377
mov ecx, dword [esi + 0x1e0]
add ecx, dword [esi + 0x1a0]
mov edx, 1
add ecx, dword [esi + 0x180]
neg ecx
jmp 0x5093b3
lea ecx, [esi + 0x198]
mov edx, 2
call fcn.005052b0
fstp qword [esp + 0x38]
mov ecx, ebx
call fcn.005052b0
fadd qword [esp + 0x38]
lea ecx, [esi + 0x1d8]
fstp qword [esp + 0x38]
call fcn.005052b0
fadd qword [esp + 0x38]
fchs
fstp qword [esp + 0x48]
mov ecx, dword [esp + 0x48]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [esp + 0x58]
mov dword [eax + 4], edx
mov dword [eax + 8], ecx
mov ecx, dword [esp + 0x60]
mov dword [eax + 0xc], ecx
jmp 0x5097c1
cmp ebx, 0xb
jne 0x5097d1
mov edx, dword [esi + 0x168]
mov ecx, dword [esi + 0x16c]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [esi + 0x170]
mov dword [eax + 4], ecx
mov ecx, dword [esi + 0x174]
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
mov edx, dword [esi + 0x178]
mov ecx, dword [esi + 0x17c]
lea ebx, [esi + 0x178]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [ebx + 8]
mov dword [eax + 4], ecx
mov ecx, dword [ebx + 0xc]
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
mov edx, dword [esi + 0x188]
mov ecx, dword [esi + 0x18c]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [esi + 0x190]
mov dword [eax + 4], ecx
mov ecx, dword [esi + 0x194]
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
mov edx, dword [esi + 0x198]
mov ecx, dword [esi + 0x19c]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [esi + 0x1a0]
mov dword [eax + 4], ecx
mov ecx, dword [esi + 0x1a4]
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
mov edx, dword [esi + 0x1a8]
mov ecx, dword [esi + 0x1ac]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [esi + 0x1b0]
mov dword [eax + 4], ecx
mov ecx, dword [esi + 0x1b4]
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
mov edx, dword [esi + 0x1b8]
mov ecx, dword [esi + 0x1bc]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [esi + 0x1c0]
mov dword [eax + 4], ecx
mov ecx, dword [esi + 0x1c4]
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
push 8
mov ecx, edi
call fcn.0047aca0
mov edx, dword [esi + 0x1c8]
mov ecx, dword [esi + 0x1cc]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [esi + 0x1d0]
mov dword [eax + 4], ecx
mov ecx, dword [esi + 0x1d4]
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
mov edx, dword [esi + 0x1d8]
mov ecx, dword [esi + 0x1dc]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [esi + 0x1e0]
mov dword [eax + 4], ecx
mov ecx, dword [esi + 0x1e4]
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
mov edx, dword [esi + 0x1e8]
mov ecx, dword [esi + 0x1ec]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [esi + 0x1f0]
mov dword [eax + 4], ecx
mov ecx, dword [esi + 0x1f4]
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
mov edx, dword [esi + 0x1f8]
mov ecx, dword [esi + 0x1fc]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [esi + 0x200]
mov dword [eax + 4], ecx
mov ecx, dword [esi + 0x204]
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
lea ecx, [esi + 0x188]
call fcn.005052b0
fstp qword [esp + 0x38]
lea ecx, [esi + 0x168]
call fcn.005052b0
fadd qword [esp + 0x38]
lea ecx, [esi + 0x1a8]
fstp qword [esp + 0x38]
call fcn.005052b0
fadd qword [esp + 0x38]
lea ecx, [esi + 0x1c8]
fstp qword [esp + 0x38]
call fcn.005052b0
fadd qword [esp + 0x38]
lea ecx, [esi + 0x1e8]
fstp qword [esp + 0x38]
call fcn.005052b0
fadd qword [esp + 0x38]
lea ecx, [esi + 0x198]
fstp qword [esp + 0x18]
call fcn.005052b0
mov ecx, ebx
fstp qword [esp + 0x38]
call fcn.005052b0
fadd qword [esp + 0x38]
lea ecx, [esi + 0x1b8]
fstp qword [esp + 0x38]
call fcn.005052b0
fadd qword [esp + 0x38]
lea ecx, [esi + 0x1d8]
fstp qword [esp + 0x38]
call fcn.005052b0
fadd qword [esp + 0x38]
lea ecx, [esi + 0x1f8]
fstp qword [esp + 0x38]
call fcn.005052b0
fadd qword [esp + 0x38]
fst qword [esp + 0x28]
fld qword [esp + 0x18]
fld st(0)
fabs
fxch st(2)
fabs
fcomp st(2)
fnstsw ax
fstp st(1)
test ah, 5
jp 0x50972e
mov edx, dword [esi + 0x208]
fstp st(0)
mov ecx, dword [esi + 0x20c]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [esi + 0x210]
mov dword [eax + 4], ecx
mov ecx, dword [esi + 0x214]
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
mov ecx, esi
call fcn.005053a0
cmp dword [ebx], 1
jne 0x5096fd
cmp dword [esi + 0x198], 1
jne 0x5096fd
cmp dword [esi + 0x1b8], 1
jne 0x5096fd
cmp dword [esi + 0x1d8], 1
jne 0x5096fd
cmp dword [esi + 0x1f8], 1
jne 0x5096fd
fld qword [esp + 0x28]
mov ebx, 1
call fcn.00551da0
neg eax
jmp 0x509710
fld qword [esp + 0x28]
mov ebx, 2
fchs
fstp qword [esp + 0x48]
mov eax, dword [esp + 0x48]
mov edx, dword [esp + 0x44]
push edi
sub esp, 0x10
mov ecx, esp
mov dword [ecx], ebx
mov dword [ecx + 4], edx
mov dword [ecx + 8], eax
mov eax, dword [esp + 0x60]
mov dword [ecx + 0xc], eax
jmp 0x5097c1
cmp dword [esi + 0x168], 1
jne 0x509769
cmp dword [esi + 0x188], 1
jne 0x509769
cmp dword [esi + 0x1a8], 1
jne 0x509769
cmp dword [esi + 0x1c8], 1
jne 0x509769
cmp dword [esi + 0x1e8], 1
jne 0x509769
mov ebx, 1
call fcn.00551da0
neg eax
jmp 0x509778
fchs
mov ebx, 2
fstp qword [esp + 0x48]
mov eax, dword [esp + 0x48]
mov edx, dword [esp + 0x44]
push edi
sub esp, 0x10
mov ecx, esp
mov dword [ecx], ebx
mov dword [ecx + 4], edx
mov dword [ecx + 8], eax
mov eax, dword [esp + 0x60]
mov dword [ecx + 0xc], eax
mov ecx, esi
call fcn.005053a0
mov ecx, dword [esi + 0x208]
mov edx, dword [esi + 0x20c]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [esi + 0x210]
mov dword [eax + 4], edx
mov edx, dword [esi + 0x214]
mov dword [eax + 8], ecx
mov dword [eax + 0xc], edx
mov ecx, esi
call fcn.005053a0
push 8
mov ecx, edi
call fcn.0047aca0
mov dword [esi + 0x484], 1
mov dword [esi + 0x478], 0
mov eax, dword [esp + 0x20]
cmp dword [esp + 0x14], eax
jl 0x507084
cmp dword [ebp + 0x1c], 0
je 0x509835
mov edx, dword [esp + 0x24]
cmp edx, dword [edi]
mov ecx, 0x10ea
jge 0x509835
mov eax, dword [edi + 4]
lea esi, [edx + eax]
mov eax, ecx
shr eax, 8
xor al, byte [esi]
inc edx
mov byte [esi], al
movzx ax, al
add ax, cx
mov ecx, 0x3193
imul ax, cx
mov ecx, 0x58bf
sub cx, ax
cmp edx, dword [edi]
movzx ecx, cx
jl 0x509806
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x18