Function at 0x100362a0
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x4c
push ebx
push esi
mov esi, ecx
push edi
mov dword [ebp - 0x1c], esi
mov eax, dword [esi + 0x64]
mov edi, dword [esi + 0x8618]
mov ecx, dword [esi + 0x8550]
mov edx, dword [esi + 0x861c]
mov ebx, dword [esi + 0x8614]
mov dword [ebp - 0x30], eax
mov eax, dword [esi + 0x8620]
mov dword [ebp - 0x44], ecx
mov dword [ebp - 8], edi
mov dword [ebp - 4], edx
mov dword [ebp - 0x14], ebx
mov dword [ebp - 0x10], eax
test edi, edi
je 0x100362f0
mov dword [ebp - 0x28], 0
cmp edi, edx
jne 0x100362f7
mov dword [ebp - 0x28], 1
test ebx, ebx
je 0x10036306
mov dword [ebp - 0x2c], 0
cmp ebx, eax
jne 0x1003630d
mov dword [ebp - 0x2c], 1
test edi, edi
je 0x1003631c
mov dword [ebp - 0x38], 0
test ebx, ebx
jne 0x10036323
mov dword [ebp - 0x38], 1
lea eax, [edx - 1]
mov dword [ebp - 0x34], eax
cmp ecx, 1
je 0x1003633e
cmp ecx, 2
je 0x1003633e
mov eax, dword [esi + 0x856c]
mov dword [ebp - 0x40], eax
jmp 0x10036345
mov dword [ebp - 0x40], 1
cmp dword [esi + 0x8094], 0
je 0x10036459
test edi, edi
jne 0x10036362
mov dword [esi + 0x8638], edi
mov dword [esi + 0x8634], edi
mov eax, dword [esi + 0x8634]
mov dword [esi + 0x8644], 0
mov dword [esi + 0x8640], 0
test eax, eax
je 0x100363b5
cmp eax, dword [esi + 0x4088]
ja 0x100363b5
mov edx, dword [esi + 0x8634]
lea eax, [edi - 1]
mov ecx, dword [esi + 0x8644]
cmp eax, dword [esi + edx*4 + 0x408c]
mov eax, 1
mov edx, dword [ebp - 4]
cmove ecx, eax
mov eax, dword [esi + 0x8634]
mov dword [esi + 0x8644], ecx
mov ecx, dword [esi + 0x4088]
cmp eax, ecx
jae 0x100363d6
cmp edi, dword [esi + eax*4 + 0x4090]
jne 0x100363d6
inc eax
mov dword [esi + 0x8634], eax
mov eax, 1
jmp 0x100363d8
xor eax, eax
mov dword [esi + 0x8638], eax
cmp dword [esi + 0x8634], ecx
jae 0x1003640d
mov ecx, dword [esi + 0x8640]
lea eax, [edi + 1]
mov edi, dword [esi + 0x8634]
cmp eax, dword [esi + edi*4 + 0x4090]
mov eax, 1
mov edi, dword [ebp - 8]
cmove ecx, eax
mov dword [esi + 0x8640], ecx
mov eax, ebx
lea ecx, [esi + 0x862c]
test eax, eax
jne 0x10036421
mov dword [esi + 0x8630], ebx
jmp 0x1003647d
cmp dword [ecx], eax
je 0x10036487
mov ebx, dword [esi + 0x8630]
cmp ebx, dword [esi + 0x84]
mov ebx, eax
jae 0x1003647d
mov edx, dword [esi + 0x8630]
cmp eax, dword [esi + edx*4 + 0x8c]
mov edx, dword [ebp - 4]
jne 0x1003647d
inc dword [esi + 0x8630]
mov dword [esi + 0x863c], 1
jmp 0x10036487
mov dword [esi + 0x8638], 0
lea ecx, [esi + 0x862c]
mov dword [esi + 0x8640], 0
mov dword [esi + 0x8644], 0
mov dword [esi + 0x863c], 0
mov eax, dword [esi + 0x8618]
mov dword [esi + 0x8628], eax
mov eax, dword [esi + 0x8614]
mov dword [ecx], eax
xor ecx, ecx
mov dword [ebp - 0x3c], ecx
mov dword [ebp - 0x48], 0x30
cmp dword [ebp - 0x40], ecx
jle 0x100373ce
jmp 0x100364b5
mov edx, dword [ebp - 4]
cmp dword [ebp - 0x30], 0
mov eax, dword [esi + ecx*4 + 0x875c]
mov ecx, dword [esi + ecx*4 + 0x879c]
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x20], ecx
je 0x1003698d
test ebx, ebx
je 0x100364e0
cmp dword [esi + 0x863c], 0
je 0x10036542
test edi, edi
je 0x100364ed
cmp dword [esi + 0x8638], 0
je 0x10036506
lea eax, [ecx + 0xc]
push eax
lea eax, [ecx + 8]
push eax
lea edx, [ecx + 4]
call fcn.100358b0
mov ecx, dword [ebp - 0x20]
add esp, 8
mov edx, dword [ebp - 4]
test ebx, ebx
je 0x10036513
cmp dword [esi + 0x863c], 0
je 0x10036542
cmp edi, edx
je 0x10036520
cmp dword [esi + 0x8638], 0
je 0x10036542
lea eax, [ecx - 0xe8]
push eax
lea eax, [ecx - 0xe4]
lea edx, [ecx - 0xf0]
add ecx, 0xffffff14
push eax
call fcn.100358b0
add esp, 8
mov ecx, dword [ebp - 0x10]
cmp ebx, ecx
je 0x10036552
cmp dword [esi + 0x863c], 0
je 0x100365c0
test edi, edi
je 0x1003655f
cmp dword [esi + 0x8638], 0
je 0x10036587
mov ecx, dword [ebp - 0x18]
lea eax, [ecx + 0xe4]
push eax
lea eax, [ecx + 0xe0]
lea edx, [ecx + 0xec]
add ecx, 0xe8
push eax
call fcn.100358b0
mov ecx, dword [ebp - 0x10]
add esp, 8
cmp ebx, ecx
je 0x10036594
cmp dword [esi + 0x863c], 0
je 0x100365c0
mov eax, dword [ebp - 4]
cmp edi, eax
je 0x100365a4
cmp dword [esi + 0x8638], 0
je 0x100365cb
mov ecx, dword [ebp - 0x18]
lea eax, [ecx - 0x10]
push eax
lea eax, [ecx - 0xc]
lea edx, [ecx - 8]
add ecx, 0xfffffffc
push eax
call fcn.100358b0
mov ecx, dword [ebp - 0x10]
add esp, 8
mov eax, dword [ebp - 4]
cmp edi, eax
je 0x10036827
cmp ebx, ecx
je 0x10036838
test ebx, ebx
je 0x10036628
cmp dword [esi + 0x863c], 0
jne 0x10036628
test edi, edi
je 0x100365f4
cmp dword [esi + 0x8638], 0
jne 0x100365f4
mov edi, 0xffffff00
jmp 0x100365f6
xor edi, edi
mov ebx, dword [ebp - 0x20]
mov esi, dword [ebp - 0x18]
nop dword [eax]
lea ecx, [esi + 0xc0]
push 0
lea edx, [edi + ebx]
add ecx, edi
call fcn.100359a0
add edi, 0x100
add esp, 4
cmp edi, 0x300
jl 0x10036600
mov edi, dword [ebp - 8]
jmp 0x100366a3
test edi, edi
je 0x1003663e
cmp dword [esi + 0x8638], 0
jne 0x1003663e
mov dword [ebp - 0x24], 0xffffff00
jmp 0x10036643
xor eax, eax
mov dword [ebp - 0x24], eax
mov ebx, dword [ebp - 0x20]
mov esi, dword [ebp - 0x24]
nop dword [eax]
lea eax, [ebx + 0x104]
add eax, esi
lea edx, [ebx + 0x10]
push eax
lea eax, [ebx + 0x100]
add edx, esi
add eax, esi
lea ecx, [ebx + 0x14]
push eax
add ecx, esi
call fcn.100358b0
lea eax, [ebx + 0x10c]
add eax, esi
lea edx, [ebx + 0x18]
push eax
lea eax, [ebx + 0x108]
add edx, esi
add eax, esi
lea ecx, [ebx + 0x1c]
push eax
add ecx, esi
call fcn.100358b0
add esi, 0x100
add esp, 0x10
cmp esi, 0x300
jl 0x10036650
mov ebx, dword [ebp - 0x14]
mov esi, dword [ebp - 0x1c]
test edi, edi
je 0x100366e3
cmp dword [esi + 0x8638], 0
jne 0x100366e3
mov edi, dword [ebp - 0x20]
mov esi, 3
lea ebx, [edi - 0x100]
push 0
lea edx, [ebx + 0x40]
mov ecx, ebx
call fcn.100359a0
add esp, 4
add ebx, 0x40
sub esi, 1
jne 0x100366c4
mov ebx, dword [ebp - 0x14]
jmp 0x10036789
mov edi, dword [ebp - 0x20]
test ebx, ebx
je 0x1003672b
cmp dword [esi + 0x863c], 0
jne 0x1003672b
lea eax, [edi + 8]
push eax
mov eax, dword [ebp - 0x18]
push edi
lea edx, [eax + 0xe0]
lea ecx, [eax + 0xe8]
call fcn.100358b0
lea eax, [edi + 0xc]
push eax
lea eax, [edi + 4]
push eax
mov eax, dword [ebp - 0x18]
lea edx, [eax + 0xe4]
lea ecx, [eax + 0xec]
call fcn.100358b0
add esp, 0x10
mov esi, 0xffffff00
lea eax, [esi + 0x148]
add eax, edi
lea edx, [esi + 0x120]
push eax
lea eax, [esi + 0x140]
add edx, edi
add eax, edi
lea ecx, [esi + 0x128]
push eax
add ecx, edi
call fcn.100358b0
lea eax, [esi + 0x14c]
add eax, edi
lea edx, [esi + 0x124]
push eax
lea eax, [esi + 0x144]
add edx, edi
add eax, edi
lea ecx, [esi + 0x12c]
push eax
add ecx, edi
call fcn.100358b0
add esi, 0x40
add esp, 0x10
cmp esi, 0xffffffc0
jl 0x10036730
mov ecx, dword [ebp - 0x20]
lea edx, [edi + 0x40]
mov esi, dword [ebp - 0x1c]
push 0
call fcn.100359a0
push 0
lea edx, [edi + 0x80]
lea ecx, [edi + 0x40]
call fcn.100359a0
mov edi, dword [ebp - 0x20]
push 0
lea ecx, [edi + 0x80]
lea edx, [ecx + 0x40]
call fcn.100359a0
lea ecx, [edi + 0x100]
push 0
lea edx, [ecx + 0x40]
call fcn.100359a0
lea ecx, [edi + 0x140]
push 0
lea edx, [ecx + 0x40]
call fcn.100359a0
lea ecx, [edi + 0x180]
push 0
lea edx, [ecx + 0x40]
call fcn.100359a0
lea ecx, [edi + 0x200]
push 0
lea edx, [ecx + 0x40]
call fcn.100359a0
lea ecx, [edi + 0x240]
push 0
lea edx, [ecx + 0x40]
call fcn.100359a0
lea ecx, [edi + 0x280]
push 0
lea edx, [ecx + 0x40]
call fcn.100359a0
mov edi, dword [ebp - 8]
add esp, 0x24
mov eax, dword [ebp - 4]
jmp 0x1003682b
cmp ebx, ecx
je 0x10036838
cmp dword [esi + 0x863c], 0
je 0x100368cd
test edi, edi
je 0x1003684a
cmp dword [esi + 0x8638], 0
mov ecx, 0xfffffff0
je 0x1003684f
mov ecx, 0x30
cmp edi, eax
mov dword [ebp - 0x24], ecx
mov edx, 0xf0
mov eax, 0xfffffff0
cmove edx, eax
mov dword [ebp - 0xc], edx
cmp ecx, edx
jge 0x100368cd
mov ebx, dword [ebp - 0x18]
mov esi, ecx
mov edi, edx
nop
lea eax, [ebx + 0x12c]
lea eax, [eax + esi*4]
push eax
lea eax, [ebx + 0x128]
lea eax, [eax + esi*4]
lea edx, [ebx + 0x38]
lea ecx, [ebx + 0x3c]
push eax
lea edx, [edx + esi*4]
lea ecx, [ecx + esi*4]
call fcn.100358b0
lea eax, [ebx + 0x124]
lea eax, [eax + esi*4]
push eax
lea eax, [ebx + 0x120]
lea eax, [eax + esi*4]
lea edx, [ebx + 0x30]
lea ecx, [ebx + 0x34]
push eax
lea edx, [edx + esi*4]
lea ecx, [ecx + esi*4]
call fcn.100358b0
add esi, 0x40
add esp, 0x10
cmp esi, edi
jl 0x10036870
mov esi, dword [ebp - 0x1c]
mov edi, dword [ebp - 8]
mov ebx, dword [ebp - 0x14]
mov edx, dword [ebp - 4]
cmp edi, edx
je 0x100368e1
cmp dword [esi + 0x8638], 0
je 0x1003698a
cmp ebx, dword [ebp - 0x10]
je 0x1003698a
test ebx, ebx
je 0x10036938
cmp dword [esi + 0x863c], 0
jne 0x10036938
mov ecx, dword [ebp - 0x20]
lea eax, [ecx - 0xe4]
push eax
lea eax, [ecx - 0xec]
push eax
mov eax, dword [ebp - 0x18]
lea edx, [eax - 0xc]
lea ecx, [eax - 4]
call fcn.100358b0
mov ecx, dword [ebp - 0x20]
lea eax, [ecx - 0xe8]
push eax
lea eax, [ecx - 0xf0]
push eax
mov eax, dword [ebp - 0x18]
lea edx, [eax - 0x10]
lea ecx, [eax - 8]
call fcn.100358b0
add esp, 0x10
mov edi, dword [ebp - 0x20]
mov esi, 0xffffff00
lea eax, [edi + 0x5c]
add eax, esi
lea edx, [edi + 0x34]
push eax
lea eax, [edi + 0x54]
add edx, esi
add eax, esi
lea ecx, [edi + 0x3c]
push eax
add ecx, esi
call fcn.100358b0
lea eax, [edi + 0x58]
add eax, esi
lea edx, [edi + 0x30]
push eax
lea eax, [edi + 0x50]
add edx, esi
add eax, esi
lea ecx, [edi + 0x38]
push eax
add ecx, esi
call fcn.100358b0
add esi, 0x40
add esp, 0x10
cmp esi, 0xffffffc0
jl 0x10036940
mov esi, dword [ebp - 0x1c]
mov edi, dword [ebp - 8]
mov edx, dword [ebp - 4]
mov eax, dword [ebp - 0x18]
test ebx, ebx
je 0x10036b7c
cmp edi, edx
mov ecx, 0xf0
mov edx, 0x30
cmove ecx, edx
test edi, edi
mov edx, 0xfffffff0
cmove edx, dword [ebp - 0x48]
cmp edx, ecx
jge 0x10036b7c
sub ecx, edx
lea esi, [edx + 2]
dec ecx
lea esi, [eax + esi*4]
shr ecx, 6
inc ecx
mov dword [ebp - 0xc], ecx
lea ecx, [esi - 8]
call fcn.100398a0
mov ecx, dword [esi - 8]
add ecx, dword [esi + 4]
mov edx, dword [esi - 4]
mov edi, ecx
sub edx, dword [esi]
mov ebx, dword [esi + 0x30]
sub edi, edx
sub ebx, dword [esi + 0x2c]
inc edi
mov dword [ebp - 0x24], ecx
mov eax, dword [ebp - 0x24]
sar edi, 1
mov ecx, edi
sub edi, dword [esi]
sub ecx, dword [esi + 4]
sub eax, edi
mov dword [esi - 8], eax
mov dword [esi], ecx
mov dword [esi + 4], edi
lea eax, [ecx + edx]
mov edx, dword [esi + 0x34]
mov ecx, dword [esi + 0x28]
add ecx, edx
mov dword [esi - 4], eax
mov dword [ebp - 0x4c], ecx
mov edi, ecx
mov dword [ebp - 0x24], edx
mov ecx, ebx
sar ecx, 1
mov edx, ecx
sar edi, 1
sub edx, dword [esi + 0x30]
lea eax, [edx + 2]
lea eax, [edx + eax*2]
sar eax, 3
sub eax, edi
add dword [ebp - 0x24], eax
mov eax, dword [ebp - 0x24]
lea eax, [eax + eax*2]
add eax, 3
sar eax, 2
sub edx, eax
lea eax, [edx + 1]
sub edx, ecx
lea eax, [eax + eax*2]
mov dword [esi + 0x30], edx
sar eax, 3
add dword [ebp - 0x24], eax
mov ecx, dword [ebp - 0x24]
lea eax, [ebx + edx]
mov ebx, dword [esi + 8]
add ecx, edi
mov edi, dword [esi + 0x14]
sub ebx, edi
mov edx, dword [esi + 0xc]
add edx, dword [esi + 0x10]
mov dword [esi + 0x2c], eax
mov eax, dword [ebp - 0x4c]
sub eax, ecx
mov dword [esi + 0x34], ecx
mov dword [esi + 0x28], eax
lea eax, [ebx + 1]
sar eax, 1
add edi, eax
lea eax, [edx + 2]
lea eax, [edx + eax*2]
mov dword [ebp - 0x4c], edi
mov ecx, dword [ebp - 0x4c]
lea edi, [edx + 1]
sar eax, 3
sub ebx, eax
sar edi, 1
sub edi, dword [esi + 0x10]
lea eax, [ebx + 2]
lea eax, [ebx + eax*2]
sar eax, 3
add edx, eax
lea eax, [ecx + 2]
lea eax, [ecx + eax*2]
sar eax, 3
lea esi, [esi + 0x100]
sub edi, eax
lea eax, [edi + 2]
lea eax, [edi + eax*2]
sar eax, 3
add ecx, eax
mov eax, ebx
sar eax, 1
add edi, eax
lea eax, [edx + 1]
sar eax, 1
sub ebx, edi
sub ecx, eax
mov dword [esi - 0xf0], edi
mov edi, dword [esi - 0xdc]
mov dword [esi - 0xf8], ebx
mov ebx, dword [esi - 0xe8]
sub ebx, edi
mov dword [esi - 0xec], ecx
lea eax, [ecx + edx]
mov edx, dword [esi - 0xe0]
add edx, dword [esi - 0xe4]
mov dword [esi - 0xf4], eax
lea eax, [ebx + 1]
sar eax, 1
add edi, eax
lea eax, [edx + 2]
lea eax, [edx + eax*2]
mov dword [ebp - 0x4c], edi
mov ecx, dword [ebp - 0x4c]
lea edi, [edx + 1]
sar eax, 3
sub ebx, eax
sar edi, 1
sub edi, dword [esi - 0xe4]
lea eax, [ebx + 2]
lea eax, [ebx + eax*2]
sar eax, 3
add edx, eax
lea eax, [ecx + 2]
lea eax, [ecx + eax*2]
sar eax, 3
sub edi, eax
lea eax, [edi + 2]
lea eax, [edi + eax*2]
sar eax, 3
add ecx, eax
mov eax, ebx
sar eax, 1
add edi, eax
lea eax, [edx + 1]
sar eax, 1
sub ebx, edi
sub ecx, eax
mov dword [esi - 0xe8], ebx
sub dword [ebp - 0xc], 1
mov dword [esi - 0xdc], ecx
mov dword [esi - 0xe4], edi
lea eax, [ecx + edx]
mov dword [esi - 0xe0], eax
jne 0x100369c7
mov esi, dword [ebp - 0x1c]
mov edi, dword [ebp - 8]
mov ebx, dword [ebp - 0x14]
cmp ebx, dword [ebp - 0x10]
je 0x100370e3
xor eax, eax
mov ecx, 0xc0
cmp edi, dword [ebp - 4]
cmove ecx, eax
neg edi
sbb edi, edi
and edi, 0xffffffc0
cmp edi, ecx
jge 0x100370e3
mov edx, dword [ebp - 0x20]
sub ecx, edi
add edx, 8
dec ecx
shr ecx, 6
inc ecx
mov dword [ebp - 0x4c], ecx
mov esi, ecx
lea edx, [edx + edi*4]
mov dword [ebp - 0xc], edx
nop dword [eax]
lea edi, [edx - 8]
mov ecx, edi
call fcn.100398a0
mov ecx, dword [edi]
mov edx, dword [ebp - 0xc]
mov eax, dword [edx + 4]
add ecx, eax
mov ebx, dword [edx]
mov edi, ecx
mov edx, dword [edx - 4]
sub edx, ebx
mov dword [ebp - 0x4c], ecx
sub edi, edx
inc edi
sar edi, 1
mov ecx, edi
sub edi, ebx
mov ebx, dword [ebp - 0xc]
sub ecx, eax
mov eax, dword [ebp - 0x4c]
sub eax, edi
mov dword [ebx - 8], eax
lea eax, [ecx + edx]
mov edx, dword [ebx + 0x34]
mov dword [ebx - 4], eax
mov eax, dword [ebx + 0x30]
mov dword [ebx], ecx
mov ecx, dword [ebx + 0x28]
add ecx, edx
mov dword [ebp - 0x24], edx
mov edx, dword [ebp - 0xc]
mov dword [ebx + 4], edi
mov ebx, eax
mov dword [ebp - 0x4c], ecx
mov edi, ecx
sar edi, 1
sub ebx, dword [edx + 0x2c]
mov ecx, ebx
sar ecx, 1
mov edx, ecx
sub edx, eax
lea eax, [edx + 2]
lea eax, [edx + eax*2]
sar eax, 3
sub eax, edi
add dword [ebp - 0x24], eax
mov eax, dword [ebp - 0x24]
lea eax, [eax + eax*2]
add eax, 3
sar eax, 2
sub edx, eax
lea eax, [edx + 1]
sub edx, ecx
lea eax, [eax + eax*2]
sar eax, 3
add dword [ebp - 0x24], eax
mov eax, dword [ebp - 0xc]
mov ecx, dword [ebp - 0x24]
add ecx, edi
mov dword [eax + 0x30], edx
mov dword [eax + 0x34], ecx
lea eax, [ebx + edx]
mov edx, dword [ebp - 0xc]
mov edi, dword [edx + 0x14]
mov ebx, dword [edx + 8]
mov dword [edx + 0x2c], eax
sub ebx, edi
mov eax, dword [ebp - 0x4c]
sub eax, ecx
mov ecx, dword [edx + 0x10]
mov dword [edx + 0x28], eax
mov edx, dword [edx + 0xc]
lea eax, [ebx + 1]
add edx, ecx
sar eax, 1
add edi, eax
mov dword [ebp - 0x4c], edi
lea edi, [edx + 1]
sar edi, 1
lea eax, [edx + 2]
sub edi, ecx
lea eax, [edx + eax*2]
mov ecx, dword [ebp - 0x4c]
sar eax, 3
sub ebx, eax
lea eax, [ebx + 2]
lea eax, [ebx + eax*2]
sar eax, 3
add edx, eax
lea eax, [ecx + 2]
lea eax, [ecx + eax*2]
sar eax, 3
sub edi, eax
lea eax, [edi + 2]
lea eax, [edi + eax*2]
sar eax, 3
add ecx, eax
mov eax, ebx
sar eax, 1
add edi, eax
lea eax, [edx + 1]
sar eax, 1
sub ebx, edi
sub ecx, eax
lea eax, [ecx + edx]
mov edx, dword [ebp - 0xc]
mov dword [edx + 0xc], eax
mov dword [edx + 0x10], edi
mov edi, dword [edx + 0x24]
mov dword [edx + 8], ebx
mov ebx, dword [edx + 0x18]
sub ebx, edi
mov dword [edx + 0x14], ecx
mov ecx, dword [edx + 0x1c]
mov edx, dword [edx + 0x20]
add edx, ecx
lea eax, [ebx + 1]
sar eax, 1
add edi, eax
lea eax, [edx + 2]
mov dword [ebp - 0x4c], edi
lea eax, [edx + eax*2]
sar eax, 3
lea edi, [edx + 1]
sub ebx, eax
sar edi, 1
sub edi, ecx
mov ecx, dword [ebp - 0x4c]
lea eax, [ebx + 2]
lea eax, [ebx + eax*2]
sar eax, 3
add edx, eax
lea eax, [ecx + 2]
lea eax, [ecx + eax*2]
sar eax, 3
sub edi, eax
lea eax, [edi + 2]
lea eax, [edi + eax*2]
sar eax, 3
add ecx, eax
mov eax, ebx
sar eax, 1
add edi, eax
lea eax, [edx + 1]
sar eax, 1
sub ebx, edi
sub ecx, eax
lea eax, [ecx + edx]
mov edx, dword [ebp - 0xc]
mov dword [edx + 0x1c], edi
lea edi, [edx + 0x38]
mov dword [edx + 0x24], ecx
mov ecx, edi
mov dword [edx + 0x20], eax
mov dword [edx + 0x18], ebx
call fcn.100398a0
mov edx, dword [ebp - 0xc]
mov ecx, dword [edi]
mov eax, dword [edx + 0x44]
add ecx, eax
mov ebx, dword [edx + 0x40]
mov dword [ebp - 0x4c], ecx
mov edx, dword [edx + 0x3c]
mov edi, ecx
sub edx, ebx
sub edi, edx
inc edi
sar edi, 1
mov ecx, edi
sub edi, ebx
mov ebx, dword [ebp - 0xc]
sub ecx, eax
mov eax, dword [ebp - 0x4c]
sub eax, edi
mov dword [ebx + 0x38], eax
lea eax, [ecx + edx]
mov edx, dword [ebx + 0x74]
mov dword [ebx + 0x3c], eax
mov eax, dword [ebx + 0x70]
mov dword [ebx + 0x40], ecx
mov ecx, dword [ebx + 0x68]
add ecx, edx
mov dword [ebp - 0x24], edx
mov edx, dword [ebp - 0xc]
mov dword [ebx + 0x44], edi
mov ebx, eax
mov dword [ebp - 0x4c], ecx
mov edi, ecx
sar edi, 1
sub ebx, dword [edx + 0x6c]
mov ecx, ebx
sar ecx, 1
mov edx, ecx
sub edx, eax
lea eax, [edx + 2]
lea eax, [edx + eax*2]
sar eax, 3
sub eax, edi
add dword [ebp - 0x24], eax
mov eax, dword [ebp - 0x24]
lea eax, [eax + eax*2]
add eax, 3
sar eax, 2
sub edx, eax
lea eax, [edx + 1]
sub edx, ecx
lea eax, [eax + eax*2]
sar eax, 3
add dword [ebp - 0x24], eax
mov eax, dword [ebp - 0xc]
mov ecx, dword [ebp - 0x24]
add ecx, edi
mov dword [eax + 0x70], edx
mov dword [eax + 0x74], ecx
lea eax, [ebx + edx]
mov edx, dword [ebp - 0xc]
mov edi, dword [edx + 0x54]
mov ebx, dword [edx + 0x48]
mov dword [edx + 0x6c], eax
sub ebx, edi
mov eax, dword [ebp - 0x4c]
sub eax, ecx
mov ecx, dword [edx + 0x50]
mov dword [edx + 0x68], eax
mov edx, dword [edx + 0x4c]
lea eax, [ebx + 1]
sar eax, 1
add edx, ecx
add edi, eax
mov dword [ebp - 0x4c], edi
lea eax, [edx + 2]
lea eax, [edx + eax*2]
sar eax, 3
lea edi, [edx + 1]
sub ebx, eax
sar edi, 1
sub edi, ecx
mov ecx, dword [ebp - 0x4c]
lea eax, [ebx + 2]
lea eax, [ebx + eax*2]
sar eax, 3
add edx, eax
lea eax, [ecx + 2]
lea eax, [ecx + eax*2]
sar eax, 3
sub edi, eax
lea eax, [edi + 2]
lea eax, [edi + eax*2]
sar eax, 3
add ecx, eax
mov eax, ebx
sar eax, 1
add edi, eax
lea eax, [edx + 1]
sar eax, 1
sub ebx, edi
sub ecx, eax
lea eax, [ecx + edx]
mov edx, dword [ebp - 0xc]
mov dword [edx + 0x4c], eax
mov dword [edx + 0x50], edi
mov edi, dword [edx + 0x64]
mov dword [edx + 0x48], ebx
mov ebx, dword [edx + 0x58]
sub ebx, edi
mov dword [edx + 0x54], ecx
mov ecx, dword [edx + 0x5c]
mov edx, dword [edx + 0x60]
add edx, ecx
lea eax, [ebx + 1]
sar eax, 1
add edi, eax
lea eax, [edx + 2]
mov dword [ebp - 0x4c], edi
lea eax, [edx + eax*2]
sar eax, 3
lea edi, [edx + 1]
sub ebx, eax
sar edi, 1
sub edi, ecx
mov ecx, dword [ebp - 0x4c]
lea eax, [ebx + 2]
lea eax, [ebx + eax*2]
sar eax, 3
add edx, eax
lea eax, [ecx + 2]
lea eax, [ecx + eax*2]
sar eax, 3
sub edi, eax
lea eax, [edi + 2]
lea eax, [edi + eax*2]
sar eax, 3
add ecx, eax
mov eax, ebx
sar eax, 1
add edi, eax
lea eax, [edx + 1]
sar eax, 1
sub ebx, edi
sub ecx, eax
lea eax, [ecx + edx]
mov edx, dword [ebp - 0xc]
mov dword [edx + 0x5c], edi
lea edi, [edx + 0x78]
mov dword [edx + 0x64], ecx
mov ecx, edi
mov dword [edx + 0x60], eax
mov dword [edx + 0x58], ebx
call fcn.100398a0
mov edx, dword [ebp - 0xc]
mov ecx, dword [edi]
mov eax, dword [edx + 0x84]
add ecx, eax
mov ebx, dword [edx + 0x80]
mov edi, ecx
mov edx, dword [edx + 0x7c]
sub edx, ebx
mov dword [ebp - 0x4c], ecx
sub edi, edx
inc edi
sar edi, 1
mov ecx, edi
sub ecx, eax
sub edi, ebx
mov ebx, dword [ebp - 0xc]
mov eax, dword [ebp - 0x4c]
sub eax, edi
mov dword [ebx + 0x78], eax
lea eax, [ecx + edx]
mov edx, dword [ebx + 0xb4]
mov dword [ebx + 0x7c], eax
mov eax, dword [ebx + 0xb0]
mov dword [ebx + 0x80], ecx
mov ecx, dword [ebx + 0xa8]
add ecx, edx
mov dword [ebx + 0x84], edi
mov ebx, eax
mov dword [ebp - 0x24], edx
mov edx, dword [ebp - 0xc]
mov edi, ecx
mov dword [ebp - 0x4c], ecx
sar edi, 1
sub ebx, dword [edx + 0xac]
mov ecx, ebx
sar ecx, 1
mov edx, ecx
sub edx, eax
lea eax, [edx + 2]
lea eax, [edx + eax*2]
sar eax, 3
sub eax, edi
add dword [ebp - 0x24], eax
mov eax, dword [ebp - 0x24]
lea eax, [eax + eax*2]
add eax, 3
sar eax, 2
sub edx, eax
lea eax, [edx + 1]
sub edx, ecx
lea eax, [eax + eax*2]
sar eax, 3
add dword [ebp - 0x24], eax
mov eax, dword [ebp - 0xc]
mov ecx, dword [ebp - 0x24]
add ecx, edi
mov dword [eax + 0xb0], edx
mov dword [eax + 0xb4], ecx
lea eax, [ebx + edx]
mov edx, dword [ebp - 0xc]
mov edi, dword [edx + 0x94]
mov ebx, dword [edx + 0x88]
mov dword [edx + 0xac], eax
sub ebx, edi
mov eax, dword [ebp - 0x4c]
sub eax, ecx
mov ecx, dword [edx + 0x90]
mov dword [edx + 0xa8], eax
mov edx, dword [edx + 0x8c]
lea eax, [ebx + 1]
sar eax, 1
add edx, ecx
add edi, eax
mov dword [ebp - 0x4c], edi
lea eax, [edx + 2]
lea eax, [edx + eax*2]
sar eax, 3
lea edi, [edx + 1]
sub ebx, eax
sar edi, 1
sub edi, ecx
mov ecx, dword [ebp - 0x4c]
lea eax, [ebx + 2]
lea eax, [ebx + eax*2]
sar eax, 3
add edx, eax
lea eax, [ecx + 2]
lea eax, [ecx + eax*2]
sar eax, 3
sub edi, eax
lea eax, [edi + 2]
lea eax, [edi + eax*2]
sar eax, 3
add ecx, eax
mov eax, ebx
sar eax, 1
add edi, eax
lea eax, [edx + 1]
sar eax, 1
sub ebx, edi
sub ecx, eax
lea eax, [ecx + edx]
mov edx, dword [ebp - 0xc]
mov dword [edx + 0x8c], eax
mov dword [edx + 0x90], edi
mov edi, dword [edx + 0xa4]
mov dword [edx + 0x88], ebx
mov ebx, dword [edx + 0x98]
sub ebx, edi
mov dword [edx + 0x94], ecx
mov ecx, dword [edx + 0x9c]
mov edx, dword [edx + 0xa0]
add edx, ecx
lea eax, [ebx + 1]
sar eax, 1
add edi, eax
lea eax, [edx + 2]
mov dword [ebp - 0x4c], edi
lea eax, [edx + eax*2]
sar eax, 3
lea edi, [edx + 1]
sub ebx, eax
sar edi, 1
sub edi, ecx
mov ecx, dword [ebp - 0x4c]
lea eax, [ebx + 2]
lea eax, [ebx + eax*2]
sar eax, 3
add edx, eax
lea eax, [ecx + 2]
lea eax, [ecx + eax*2]
sar eax, 3
sub edi, eax
lea eax, [edi + 2]
lea eax, [edi + eax*2]
sar eax, 3
add ecx, eax
mov eax, ebx
sar eax, 1
add edi, eax
lea eax, [edx + 1]
sar eax, 1
sub ebx, edi
sub ecx, eax
lea eax, [ecx + edx]
mov edx, dword [ebp - 0xc]
mov dword [edx + 0xa0], eax
mov dword [edx + 0x98], ebx
mov dword [edx + 0xa4], ecx
mov dword [edx + 0x9c], edi
add edx, 0x100
mov dword [ebp - 0xc], edx
sub esi, 1
jne 0x10036bc0
mov esi, dword [ebp - 0x1c]
mov ebx, dword [ebp - 0x14]
cmp dword [ebp - 0x30], 2
jne 0x10037383
test ebx, ebx
je 0x100370fa
cmp dword [esi + 0x863c], 0
je 0x1003712c
mov edi, dword [ebp - 8]
test edi, edi
je 0x1003710a
cmp dword [esi + 0x8638], 0
je 0x10037126
mov ecx, dword [ebp - 0x20]
lea eax, [ecx + 0x140]
push eax
lea eax, [ecx + 0x40]
push eax
lea edx, [ecx + 0x100]
call fcn.100358b0
add esp, 8
test ebx, ebx
je 0x10037138
jmp 0x1003712f
mov edi, dword [ebp - 8]
cmp dword [esi + 0x863c], 0
je 0x1003716b
cmp edi, dword [ebp - 4]
je 0x10037146
cmp dword [esi + 0x8638], 0
je 0x1003716b
mov ecx, dword [ebp - 0x20]
lea eax, [ecx - 0xc0]
push eax
lea eax, [ecx - 0x1c0]
lea edx, [ecx - 0x100]
add ecx, 0xfffffe00
push eax
call fcn.100358b0
add esp, 8
mov eax, dword [ebp - 0x10]
cmp ebx, eax
je 0x1003717b
cmp dword [esi + 0x863c], 0
je 0x100371e7
test edi, edi
je 0x10037188
cmp dword [esi + 0x8638], 0
je 0x100371ad
mov ecx, dword [ebp - 0x18]
lea eax, [ecx + 0x1c0]
push eax
lea eax, [ecx + 0xc0]
lea edx, [ecx + 0x180]
sub ecx, 0xffffff80
push eax
call fcn.100358b0
mov eax, dword [ebp - 0x10]
add esp, 8
cmp ebx, eax
je 0x100371ba
cmp dword [esi + 0x863c], 0
je 0x100371e7
cmp edi, dword [ebp - 4]
je 0x100371c8
cmp dword [esi + 0x8638], 0
je 0x100371e7
mov ecx, dword [ebp - 0x18]
lea eax, [ecx - 0x40]
push eax
lea eax, [ecx - 0x140]
lea edx, [ecx - 0x80]
add ecx, 0xfffffe80
push eax
call fcn.100358b0
add esp, 8
mov eax, dword [ebp - 0x28]
test eax, eax
jne 0x100371fa
cmp dword [esi + 0x8638], eax
je 0x100372ce
cmp dword [ebp - 0x2c], 0
jne 0x100372ba
cmp dword [esi + 0x863c], 0
jne 0x100372ba
test edi, edi
je 0x1003721e
cmp dword [esi + 0x8638], 0
je 0x10037265
mov ecx, dword [ebp - 0x20]
lea eax, [ecx + 0x40]
push eax
mov eax, dword [ebp - 0x18]
push ecx
lea edx, [eax + 0xc0]
lea ecx, [eax + 0x80]
call fcn.100358b0
mov ecx, dword [ebp - 0x20]
lea eax, [ecx + 0x140]
push eax
lea eax, [ecx + 0x100]
push eax
mov eax, dword [ebp - 0x18]
lea edx, [eax + 0x1c0]
lea ecx, [eax + 0x180]
call fcn.100358b0
mov eax, dword [ebp - 0x28]
add esp, 0x10
cmp edi, dword [ebp - 4]
je 0x10037273
cmp dword [esi + 0x8638], 0
je 0x100372ba
mov edi, dword [ebp - 0x20]
lea eax, [edi - 0x1c0]
push eax
lea eax, [edi - 0x200]
push eax
mov eax, dword [ebp - 0x18]
lea edx, [eax - 0x140]
lea ecx, [eax - 0x180]
call fcn.100358b0
lea eax, [edi - 0xc0]
push eax
lea eax, [edi - 0x100]
push eax
mov eax, dword [ebp - 0x18]
lea edx, [eax - 0x40]
lea ecx, [eax - 0x80]
call fcn.100358b0
mov eax, dword [ebp - 0x28]
add esp, 0x10
test eax, eax
jne 0x10037383
cmp dword [esi + 0x8638], eax
jne 0x10037383
cmp dword [ebp - 0x2c], 0
jne 0x100372ef
cmp dword [esi + 0x863c], 0
jne 0x100372ef
mov edi, dword [ebp - 0x18]
mov ecx, edi
mov edx, dword [ebp - 0x20]
call fcn.10035d00
jmp 0x10037386
test ebx, ebx
je 0x100372fc
cmp dword [esi + 0x863c], 0
je 0x10037337
mov edi, dword [ebp - 0x20]
lea eax, [edi + 0x100]
push eax
push edi
lea edx, [edi - 0x100]
lea ecx, [edi - 0x200]
call fcn.100358b0
lea eax, [edi + 0x140]
push eax
lea eax, [edi + 0x40]
push eax
lea edx, [edi - 0xc0]
lea ecx, [edi - 0x1c0]
call fcn.100358b0
add esp, 0x10
cmp ebx, dword [ebp - 0x10]
je 0x10037345
cmp dword [esi + 0x863c], 0
je 0x10037383
mov edi, dword [ebp - 0x18]
sub edi, 0xffffff80
lea eax, [edi + 0x100]
push eax
push edi
lea edx, [edi - 0x100]
lea ecx, [edi - 0x200]
call fcn.100358b0
lea eax, [edi + 0x140]
push eax
lea eax, [edi + 0x40]
push eax
lea edx, [edi - 0xc0]
lea ecx, [edi - 0x1c0]
call fcn.100358b0
add esp, 0x10
mov edi, dword [ebp - 0x18]
cmp dword [ebp - 0x38], 0
jne 0x100373bb
cmp dword [esi + 0x855c], 0
je 0x100373b0
cmp dword [ebp - 0x3c], 0
je 0x100373b0
lea eax, [edi - 0x400]
mov ecx, 0x10
sar dword [eax], 1
lea eax, [eax + 0x40]
sub ecx, 1
jne 0x100373a6
lea ecx, [edi - 0x400]
call fcn.100356e0
mov ecx, dword [ebp - 0x3c]
mov edi, dword [ebp - 8]
inc ecx
mov dword [ebp - 0x3c], ecx
cmp ecx, dword [ebp - 0x40]
jl 0x100364b2
xor eax, eax
mov ecx, 2
cmp dword [ebp - 0x44], 1
cmove eax, ecx
xor ecx, ecx
mov dword [ebp - 0x48], eax
mov dword [ebp - 0x20], ecx
test eax, eax
je 0x10038068
jmp 0x100373f3
mov ebx, dword [ebp - 0x14]
cmp dword [ebp - 0x30], 0
mov eax, dword [esi + ecx*4 + 0x8760]
mov ecx, dword [esi + ecx*4 + 0x87a0]
mov dword [ebp - 0xc], eax
mov dword [ebp - 0x18], ecx
je 0x100377be
test ebx, ebx
je 0x1003741e
cmp dword [esi + 0x863c], 0
je 0x10037472
test edi, edi
je 0x1003742b
cmp dword [esi + 0x8638], 0
je 0x10037441
lea eax, [ecx + 0xc]
push eax
lea eax, [ecx + 8]
push eax
lea edx, [ecx + 4]
call fcn.100358b0
mov ecx, dword [ebp - 0x18]
add esp, 8
test ebx, ebx
je 0x1003744e
cmp dword [esi + 0x863c], 0
je 0x10037472
cmp edi, dword [ebp - 4]
je 0x1003745c
cmp dword [esi + 0x8638], 0
je 0x10037472
lea eax, [ecx - 0x68]
push eax
lea eax, [ecx - 0x64]
lea edx, [ecx - 0x70]
add ecx, 0xffffff94
push eax
call fcn.100358b0
add esp, 8
mov ecx, dword [ebp - 0x10]
cmp ebx, ecx
je 0x10037482
cmp dword [esi + 0x863c], 0
je 0x100374e4
test edi, edi
je 0x1003748f
cmp dword [esi + 0x8638], 0
je 0x100374ab
mov ecx, dword [ebp - 0xc]
lea eax, [ecx + 0x64]
push eax
lea eax, [ecx + 0x60]
lea edx, [ecx + 0x6c]
add ecx, 0x68
push eax
call fcn.100358b0
mov ecx, dword [ebp - 0x10]
add esp, 8
cmp ebx, ecx
je 0x100374b8
cmp dword [esi + 0x863c], 0
je 0x100374e4
mov eax, dword [ebp - 4]
cmp edi, eax
je 0x100374c8
cmp dword [esi + 0x8638], 0
je 0x100374ef
mov ecx, dword [ebp - 0xc]
lea eax, [ecx - 0x10]
push eax
lea eax, [ecx - 0xc]
lea edx, [ecx - 8]
add ecx, 0xfffffffc
push eax
call fcn.100358b0
mov ecx, dword [ebp - 0x10]
add esp, 8
mov eax, dword [ebp - 4]
cmp edi, eax
je 0x10037688
cmp ebx, ecx
je 0x10037699
test ebx, ebx
je 0x10037545
cmp dword [esi + 0x863c], 0
jne 0x10037545
test edi, edi
je 0x10037518
cmp dword [esi + 0x8638], 0
jne 0x10037518
mov edi, 0xffffff80
jmp 0x1003751a
xor edi, edi
mov ebx, dword [ebp - 0x18]
mov esi, dword [ebp - 0xc]
lea ecx, [esi + 0x40]
push 0x20
lea edx, [edi + ebx]
add ecx, edi
call fcn.100359a0
sub edi, 0xffffff80
add esp, 4
cmp edi, 0x80
jl 0x10037520
mov edi, dword [ebp - 8]
jmp 0x100375c0
test edi, edi
je 0x1003755b
cmp dword [esi + 0x8638], 0
jne 0x1003755b
mov dword [ebp - 0x40], 0xffffff80
jmp 0x10037560
xor eax, eax
mov dword [ebp - 0x40], eax
mov ebx, dword [ebp - 0x18]
mov esi, dword [ebp - 0x40]
nop word [eax + eax]
lea eax, [ebx + 0x84]
add eax, esi
lea edx, [ebx + 0x10]
push eax
lea eax, [ebx + 0x80]
add edx, esi
add eax, esi
lea ecx, [ebx + 0x14]
push eax
add ecx, esi
call fcn.100358b0
lea eax, [ebx + 0x8c]
add eax, esi
lea edx, [ebx + 0x18]
push eax
lea eax, [ebx + 0x88]
add edx, esi
add eax, esi
lea ecx, [ebx + 0x1c]
push eax
add ecx, esi
call fcn.100358b0
sub esi, 0xffffff80
add esp, 0x10
cmp esi, 0x80
jl 0x10037570
mov ebx, dword [ebp - 0x14]
mov esi, dword [ebp - 0x1c]
test edi, edi
je 0x10037600
cmp dword [esi + 0x8638], 0
jne 0x10037600
mov ecx, dword [ebp - 0x18]
add ecx, 0xffffff80
push 0x20
lea edx, [ecx + 0x40]
call fcn.100359a0
mov eax, dword [ebp - 0x18]
add esp, 4
mov ecx, eax
lea edx, [eax + 0x40]
push 0x20
call fcn.100359a0
mov eax, dword [ebp - 4]
add esp, 4
jmp 0x1003768c
test ebx, ebx
je 0x1003763f
cmp dword [esi + 0x863c], 0
jne 0x1003763f
mov ecx, dword [ebp - 0x18]
lea eax, [ecx + 8]
push eax
mov eax, dword [ebp - 0xc]
push ecx
lea edx, [eax + 0x60]
lea ecx, [eax + 0x68]
call fcn.100358b0
mov ecx, dword [ebp - 0x18]
lea eax, [ecx + 0xc]
push eax
lea eax, [ecx + 4]
push eax
mov eax, dword [ebp - 0xc]
lea edx, [eax + 0x64]
lea ecx, [eax + 0x6c]
call fcn.100358b0
add esp, 0x10
mov ecx, dword [ebp - 0x18]
lea edx, [ecx + 0x40]
lea eax, [ecx + 0x48]
mov dword [ebp - 0x4c], edx
push eax
push edx
lea edx, [ecx + 0x20]
add ecx, 0x28
call fcn.100358b0
mov ecx, dword [ebp - 0x18]
lea eax, [ecx + 0x4c]
push eax
lea eax, [ecx + 0x44]
lea edx, [ecx + 0x24]
add ecx, 0x2c
push eax
call fcn.100358b0
mov eax, dword [ebp - 0x18]
add esp, 0x10
mov edx, dword [ebp - 0x4c]
mov ecx, eax
push 0x20
call fcn.100359a0
mov eax, dword [ebp - 4]
add esp, 4
jmp 0x1003768c
cmp ebx, ecx
je 0x10037699
cmp dword [esi + 0x863c], 0
je 0x1003772d
test edi, edi
je 0x100376ab
cmp dword [esi + 0x8638], 0
mov ecx, 0xfffffff0
je 0x100376b0
mov ecx, 0x10
cmp edi, eax
mov dword [ebp - 0x40], ecx
mov edx, 0x20
mov eax, 0xfffffff0
cmove edx, eax
mov dword [ebp - 0x4c], edx
cmp ecx, edx
jge 0x1003772d
mov ebx, dword [ebp - 0xc]
mov esi, ecx
mov edi, edx
lea eax, [ebx + 0xac]
lea eax, [eax + esi*4]
push eax
lea eax, [ebx + 0xa8]
lea eax, [eax + esi*4]
lea edx, [ebx + 0x38]
lea ecx, [ebx + 0x3c]
push eax
lea edx, [edx + esi*4]
lea ecx, [ecx + esi*4]
call fcn.100358b0
lea eax, [ebx + 0xa4]
lea eax, [eax + esi*4]
push eax
lea eax, [ebx + 0xa0]
lea eax, [eax + esi*4]
lea edx, [ebx + 0x30]
lea ecx, [ebx + 0x34]
push eax
lea edx, [edx + esi*4]
lea ecx, [ecx + esi*4]
call fcn.100358b0
add esi, 0x20
add esp, 0x10
cmp esi, edi
jl 0x100376d0
mov esi, dword [ebp - 0x1c]
mov edi, dword [ebp - 8]
mov ebx, dword [ebp - 0x14]
mov ecx, dword [ebp - 4]
cmp edi, ecx
je 0x10037741
cmp dword [esi + 0x8638], 0
je 0x10037b94
cmp ebx, dword [ebp - 0x10]
je 0x10037b94
test ebx, ebx
je 0x1003778c
cmp dword [esi + 0x863c], 0
jne 0x1003778c
mov ecx, dword [ebp - 0x18]
lea eax, [ecx - 0x64]
push eax
lea eax, [ecx - 0x6c]
push eax
mov eax, dword [ebp - 0xc]
lea edx, [eax - 0xc]
lea ecx, [eax - 4]
call fcn.100358b0
mov ecx, dword [ebp - 0x18]
lea eax, [ecx - 0x68]
push eax
lea eax, [ecx - 0x70]
push eax
mov eax, dword [ebp - 0xc]
lea edx, [eax - 0x10]
lea ecx, [eax - 8]
call fcn.100358b0
add esp, 0x10
mov ecx, dword [ebp - 0x18]
lea eax, [ecx - 0x24]
push eax
lea eax, [ecx - 0x2c]
lea edx, [ecx - 0x4c]
add ecx, 0xffffffbc
push eax
call fcn.100358b0
mov ecx, dword [ebp - 0x18]
lea eax, [ecx - 0x28]
push eax
lea eax, [ecx - 0x30]
lea edx, [ecx - 0x50]
add ecx, 0xffffffb8
push eax
call fcn.100358b0
mov eax, dword [ebp - 0xc]
add esp, 0x10
mov ecx, dword [ebp - 4]
test ebx, ebx
je 0x1003798b
cmp edi, ecx
mov edx, 0x30
mov ecx, 0x10
cmove edx, ecx
test edi, edi
mov ecx, 0xfffffff0
mov edi, 0x10
cmove ecx, edi
cmp ecx, edx
jge 0x1003798b
sub edx, ecx
lea esi, [ecx + 2]
dec edx
lea esi, [eax + esi*4]
shr edx, 5
inc edx
mov dword [ebp - 0x40], edx
nop
lea ecx, [esi - 8]
call fcn.100398a0
mov ecx, dword [esi - 8]
add ecx, dword [esi + 4]
mov edx, dword [esi - 4]
mov edi, ecx
sub edx, dword [esi]
mov ebx, dword [esi + 0x30]
sub edi, edx
sub ebx, dword [esi + 0x2c]
inc edi
mov dword [ebp - 0x4c], ecx
mov eax, dword [ebp - 0x4c]
sar edi, 1
mov ecx, edi
sub edi, dword [esi]
sub ecx, dword [esi + 4]
sub eax, edi
mov dword [esi - 8], eax
mov dword [esi], ecx
mov dword [esi + 4], edi
lea eax, [ecx + edx]
mov edx, dword [esi + 0x34]
mov ecx, dword [esi + 0x28]
add ecx, edx
mov dword [esi - 4], eax
mov dword [ebp - 0x4c], ecx
mov edi, ecx
mov dword [ebp - 0x24], edx
mov ecx, ebx
sar ecx, 1
mov edx, ecx
sar edi, 1
sub edx, dword [esi + 0x30]
lea eax, [edx + 2]
lea eax, [edx + eax*2]
sar eax, 3
sub eax, edi
add dword [ebp - 0x24], eax
mov eax, dword [ebp - 0x24]
lea eax, [eax + eax*2]
add eax, 3
sar eax, 2
sub edx, eax
lea eax, [edx + 1]
sub edx, ecx
lea eax, [eax + eax*2]
mov dword [esi + 0x30], edx
sar eax, 3
add dword [ebp - 0x24], eax
mov ecx, dword [ebp - 0x24]
lea eax, [ebx + edx]
mov ebx, dword [esi + 8]
add ecx, edi
mov edi, dword [esi + 0x14]
sub ebx, edi
mov edx, dword [esi + 0xc]
add edx, dword [esi + 0x10]
mov dword [esi + 0x2c], eax
mov eax, dword [ebp - 0x4c]
sub eax, ecx
mov dword [esi + 0x34], ecx
mov dword [esi + 0x28], eax
lea eax, [ebx + 1]
sar eax, 1
add edi, eax
lea eax, [edx + 2]
lea eax, [edx + eax*2]
mov dword [ebp - 0x4c], edi
mov ecx, dword [ebp - 0x4c]
lea edi, [edx + 1]
sar eax, 3
sub ebx, eax
sar edi, 1
sub edi, dword [esi + 0x10]
lea eax, [ebx + 2]
lea eax, [ebx + eax*2]
sar eax, 3
add edx, eax
lea eax, [ecx + 2]
lea eax, [ecx + eax*2]
sar eax, 3
lea esi, [esi + 0x80]
sub edi, eax
lea eax, [edi + 2]
lea eax, [edi + eax*2]
sar eax, 3
add ecx, eax
mov eax, ebx
sar eax, 1
add edi, eax
lea eax, [edx + 1]
sar eax, 1
sub ebx, edi
sub ecx, eax
mov dword [esi - 0x70], edi
mov edi, dword [esi - 0x5c]
mov dword [esi - 0x78], ebx
mov ebx, dword [esi - 0x68]
sub ebx, edi
mov dword [esi - 0x6c], ecx
lea eax, [ecx + edx]
mov edx, dword [esi - 0x60]
add edx, dword [esi - 0x64]
mov dword [esi - 0x74], eax
lea eax, [ebx + 1]
sar eax, 1
add edi, eax
lea eax, [edx + 2]
lea eax, [edx + eax*2]
mov dword [ebp - 0x4c], edi
mov ecx, dword [ebp - 0x4c]
lea edi, [edx + 1]
sar eax, 3
sub ebx, eax
sar edi, 1
sub edi, dword [esi - 0x64]
lea eax, [ebx + 2]
lea eax, [ebx + eax*2]
sar eax, 3
add edx, eax
lea eax, [ecx + 2]
lea eax, [ecx + eax*2]
sar eax, 3
sub edi, eax
lea eax, [edi + 2]
lea eax, [edi + eax*2]
sar eax, 3
add ecx, eax
mov eax, ebx
sar eax, 1
add edi, eax
lea eax, [edx + 1]
sar eax, 1
sub ebx, edi
sub ecx, eax
mov dword [esi - 0x68], ebx
sub dword [ebp - 0x40], 1
mov dword [esi - 0x5c], ecx
mov dword [esi - 0x64], edi
lea eax, [ecx + edx]
mov dword [esi - 0x60], eax
jne 0x10037800
mov esi, dword [ebp - 0x1c]
mov ebx, dword [ebp - 0x14]
mov edi, dword [ebp - 8]
mov edx, dword [ebp - 4]
cmp ebx, dword [ebp - 0x10]
je 0x10037b61
xor eax, eax
mov ecx, 0x20
cmp edi, edx
cmove ecx, eax
mov eax, edi
neg eax
sbb eax, eax
and eax, 0xffffffe0
mov dword [ebp - 0x4c], eax
cmp eax, ecx
jge 0x10037b61
mov edx, dword [ebp - 0x4c]
sub ecx, edx
mov eax, dword [ebp - 0x18]
dec ecx
shr ecx, 5
inc ecx
lea esi, [edx + 2]
mov dword [ebp - 0x40], ecx
lea esi, [eax + esi*4]
lea ecx, [esi - 8]
call fcn.100398a0
mov ecx, dword [esi - 8]
add ecx, dword [esi + 4]
mov edx, dword [esi - 4]
mov edi, ecx
sub edx, dword [esi]
mov ebx, dword [esi + 0x30]
sub edi, edx
sub ebx, dword [esi + 0x2c]
inc edi
mov dword [ebp - 0x4c], ecx
mov eax, dword [ebp - 0x4c]
sar edi, 1
mov ecx, edi
sub edi, dword [esi]
sub ecx, dword [esi + 4]
sub eax, edi
mov dword [esi - 8], eax
mov dword [esi], ecx
mov dword [esi + 4], edi
lea eax, [ecx + edx]
mov edx, dword [esi + 0x34]
mov ecx, dword [esi + 0x28]
add ecx, edx
mov dword [esi - 4], eax
mov dword [ebp - 0x4c], ecx
mov edi, ecx
mov dword [ebp - 0x24], edx
mov ecx, ebx
sar ecx, 1
mov edx, ecx
sar edi, 1
sub edx, dword [esi + 0x30]
lea eax, [edx + 2]
lea eax, [edx + eax*2]
sar eax, 3
sub eax, edi
add dword [ebp - 0x24], eax
mov eax, dword [ebp - 0x24]
lea eax, [eax + eax*2]
add eax, 3
sar eax, 2
sub edx, eax
lea eax, [edx + 1]
sub edx, ecx
lea eax, [eax + eax*2]
mov dword [esi + 0x30], edx
sar eax, 3
add dword [ebp - 0x24], eax
mov ecx, dword [ebp - 0x24]
lea eax, [ebx + edx]
mov ebx, dword [esi + 8]
add ecx, edi
mov edi, dword [esi + 0x14]
sub ebx, edi
mov edx, dword [esi + 0xc]
add edx, dword [esi + 0x10]
mov dword [esi + 0x2c], eax
mov eax, dword [ebp - 0x4c]
sub eax, ecx
mov dword [esi + 0x34], ecx
mov dword [esi + 0x28], eax
lea eax, [ebx + 1]
sar eax, 1
add edi, eax
lea eax, [edx + 2]
lea eax, [edx + eax*2]
mov dword [ebp - 0x4c], edi
mov ecx, dword [ebp - 0x4c]
lea edi, [edx + 1]
sar eax, 3
sub ebx, eax
sar edi, 1
sub edi, dword [esi + 0x10]
lea eax, [ebx + 2]
lea eax, [ebx + eax*2]
sar eax, 3
add edx, eax
lea eax, [ecx + 2]
lea eax, [ecx + eax*2]
sar eax, 3
lea esi, [esi + 0x80]
sub edi, eax
lea eax, [edi + 2]
lea eax, [edi + eax*2]
sar eax, 3
add ecx, eax
mov eax, ebx
sar eax, 1
add edi, eax
lea eax, [edx + 1]
sar eax, 1
sub ebx, edi
sub ecx, eax
mov dword [esi - 0x70], edi
mov edi, dword [esi - 0x5c]
mov dword [esi - 0x78], ebx
mov ebx, dword [esi - 0x68]
sub ebx, edi
mov dword [esi - 0x6c], ecx
lea eax, [ecx + edx]
mov edx, dword [esi - 0x60]
add edx, dword [esi - 0x64]
mov dword [esi - 0x74], eax
lea eax, [ebx + 1]
sar eax, 1
add edi, eax
lea eax, [edx + 2]
lea eax, [edx + eax*2]
mov dword [ebp - 0x4c], edi
mov ecx, dword [ebp - 0x4c]
lea edi, [edx + 1]
sar eax, 3
sub ebx, eax
sar edi, 1
sub edi, dword [esi - 0x64]
lea eax, [ebx + 2]
lea eax, [ebx + eax*2]
sar eax, 3
add edx, eax
lea eax, [ecx + 2]
lea eax, [ecx + eax*2]
sar eax, 3
sub edi, eax
lea eax, [edi + 2]
lea eax, [edi + eax*2]
sar eax, 3
add ecx, eax
mov eax, ebx
sar eax, 1
add edi, eax
lea eax, [edx + 1]
sar eax, 1
sub ebx, edi
sub ecx, eax
mov dword [esi - 0x68], ebx
sub dword [ebp - 0x40], 1
mov dword [esi - 0x5c], ecx
mov dword [esi - 0x64], edi
lea eax, [ecx + edx]
mov dword [esi - 0x60], eax
jne 0x100379d0
mov esi, dword [ebp - 0x1c]
mov edi, dword [ebp - 8]
mov ebx, dword [ebp - 0x14]
mov edx, dword [ebp - 4]
cmp dword [ebp - 0x30], 2
jne 0x10037fad
cmp edi, 1
je 0x10037b79
cmp dword [esi + 0x8644], 0
je 0x10037b9c
test ebx, ebx
je 0x10037b86
cmp dword [esi + 0x863c], 0
je 0x10037b9c
mov ecx, dword [ebp - 0x18]
mov eax, dword [ecx - 0x80]
sub dword [ecx - 0x100], eax
jmp 0x10037b9f
mov eax, dword [ebp - 0xc]
jmp 0x100377c1
mov ecx, dword [ebp - 0x18]
lea eax, [edx - 1]
cmp edi, eax
je 0x10037baf
cmp dword [esi + 0x8640], 0
je 0x10037bcb
test ebx, ebx
je 0x10037bbc
cmp dword [esi + 0x863c], 0
je 0x10037bcb
mov edx, dword [ebp - 0x20]
mov eax, dword [ecx]
mov dword [esi + edx*8 + 0x8648], eax
mov edx, dword [ebp - 4]
cmp edi, edx
je 0x10037bd8
cmp dword [esi + 0x8638], 0
je 0x10037bf2
test ebx, ebx
je 0x10037be5
cmp dword [esi + 0x863c], 0
je 0x10037bf2
mov eax, dword [ebp - 0x20]
mov eax, dword [esi + eax*8 + 0x8648]
sub dword [ecx - 0x80], eax
cmp edi, 1
je 0x10037c00
cmp dword [esi + 0x8644], 0
je 0x10037c23
mov eax, dword [ebp - 0x10]
cmp ebx, eax
je 0x10037c10
cmp dword [esi + 0x863c], 0
je 0x10037c1e
mov edx, dword [ebp - 0xc]
mov eax, dword [edx - 0x40]
sub dword [edx - 0xc0], eax
jmp 0x10037c26
mov edx, dword [ebp - 0xc]
jmp 0x10037c29
mov edx, dword [ebp - 0xc]
mov eax, dword [ebp - 0x10]
cmp edi, dword [ebp - 0x34]
je 0x10037c37
cmp dword [esi + 0x8640], 0
je 0x10037c54
cmp ebx, eax
je 0x10037c44
cmp dword [esi + 0x863c], 0
je 0x10037c54
mov ecx, dword [ebp - 0x20]
mov eax, dword [edx + 0x40]
mov dword [esi + ecx*8 + 0x864c], eax
mov ecx, dword [ebp - 0x18]
cmp edi, dword [ebp - 4]
je 0x10037c62
cmp dword [esi + 0x8638], 0
je 0x10037c7d
cmp ebx, dword [ebp - 0x10]
je 0x10037c70
cmp dword [esi + 0x863c], 0
je 0x10037c7d
mov eax, dword [ebp - 0x20]
mov eax, dword [esi + eax*8 + 0x864c]
sub dword [edx - 0x40], eax
cmp dword [ebp - 0x28], 0
jne 0x10037c90
cmp dword [esi + 0x8638], 0
je 0x10037d4f
cmp dword [ebp - 0x2c], 0
jne 0x10037d45
cmp dword [esi + 0x863c], 0
jne 0x10037d45
test edi, edi
je 0x10037cb4
cmp dword [esi + 0x8638], 0
je 0x10037cf3
mov edx, dword [edx + 0x40]
mov edi, dword [ecx]
lea eax, [edx + 2]
sar eax, 2
sub edi, eax
mov eax, edi
sar eax, 0xd
lea ecx, [edi + 1]
sar ecx, 1
add ecx, eax
mov eax, edi
sar eax, 9
add ecx, eax
mov eax, edi
sar eax, 5
add ecx, eax
mov eax, dword [ebp - 0xc]
sub edx, ecx
mov ecx, dword [ebp - 0x18]
mov dword [eax + 0x40], edx
lea eax, [edx + 2]
sar eax, 2
sub edi, eax
mov dword [ecx], edi
mov edi, dword [ebp - 8]
cmp edi, dword [ebp - 4]
je 0x10037d01
cmp dword [esi + 0x8638], 0
je 0x10037d45
mov eax, dword [ebp - 0xc]
mov edi, dword [ecx - 0x80]
mov edx, dword [eax - 0x40]
lea eax, [edx + 2]
sar eax, 2
sub edi, eax
mov eax, edi
sar eax, 0xd
lea ecx, [edi + 1]
sar ecx, 1
add ecx, eax
mov eax, edi
sar eax, 9
add ecx, eax
mov eax, edi
sar eax, 5
add ecx, eax
mov eax, dword [ebp - 0xc]
sub edx, ecx
mov ecx, dword [ebp - 0x18]
mov dword [eax - 0x40], edx
lea eax, [edx + 2]
sar eax, 2
sub edi, eax
mov dword [ecx - 0x80], edi
mov edi, dword [ebp - 8]
cmp dword [ebp - 0x28], 0
jne 0x10037eaa
mov eax, dword [ebp - 0x2c]
test eax, eax
jne 0x10037d62
cmp dword [esi + 0x863c], eax
je 0x10037e1e
cmp dword [esi + 0x8638], 0
jne 0x10037e0a
test ebx, ebx
je 0x10037d7c
cmp dword [esi + 0x863c], 0
je 0x10037db5
mov edx, dword [ecx - 0x80]
mov edi, dword [ecx]
lea eax, [edx + 2]
sar eax, 2
sub edi, eax
mov eax, edi
sar eax, 0xd
lea ecx, [edi + 1]
sar ecx, 1
add ecx, eax
mov eax, edi
sar eax, 9
add ecx, eax
mov eax, edi
sar eax, 5
add ecx, eax
sub edx, ecx
mov ecx, dword [ebp - 0x18]
lea eax, [edx + 2]
mov dword [ecx - 0x80], edx
sar eax, 2
sub edi, eax
mov dword [ecx], edi
cmp ebx, dword [ebp - 0x10]
je 0x10037dc7
cmp dword [esi + 0x863c], 0
je 0x10037ea7
mov ebx, dword [ebp - 0xc]
mov edx, dword [ebx - 0x40]
mov edi, dword [ebx + 0x40]
lea eax, [edx + 2]
sar eax, 2
sub edi, eax
mov eax, edi
sar eax, 0xd
lea ecx, [edi + 1]
sar ecx, 1
add ecx, eax
mov eax, edi
sar eax, 9
add ecx, eax
mov eax, edi
sar eax, 5
add ecx, eax
sub edx, ecx
mov dword [ebx - 0x40], edx
lea eax, [edx + 2]
sar eax, 2
sub edi, eax
mov dword [ebx + 0x40], edi
mov edi, dword [ebp - 8]
jmp 0x10037ead
test eax, eax
jne 0x10037eaa
cmp dword [esi + 0x863c], eax
jne 0x10037eaa
cmp dword [esi + 0x8638], 0
jne 0x10037eaa
mov ebx, dword [ecx - 0x80]
mov ecx, dword [ecx]
mov eax, dword [ebp - 0xc]
mov edx, dword [eax - 0x40]
mov edi, dword [eax + 0x40]
add edx, ecx
add edi, ebx
lea eax, [edx + 1]
sar eax, 1
sub ecx, eax
lea eax, [edi + 1]
sar eax, 1
sub ebx, eax
mov dword [ebp - 0x4c], ecx
lea eax, [edx + 2]
sar eax, 2
sub edi, eax
mov eax, edi
sar eax, 0xd
lea ecx, [edi + 1]
sar ecx, 1
add ecx, eax
mov eax, edi
sar eax, 9
add ecx, eax
mov eax, edi
sar eax, 5
add ecx, eax
sub edx, ecx
mov ecx, dword [ebp - 0x4c]
lea eax, [edx + 2]
sar eax, 2
sub edi, eax
lea eax, [edx + 1]
sar eax, 1
add ecx, eax
sub edx, ecx
lea eax, [edi + 1]
sar eax, 1
add ebx, eax
mov eax, dword [ebp - 0xc]
sub edi, ebx
mov dword [eax - 0x40], edx
mov edx, dword [ebp - 0x18]
mov dword [eax + 0x40], edi
mov edi, dword [ebp - 8]
mov dword [edx - 0x80], ebx
mov ebx, eax
mov dword [edx], ecx
jmp 0x10037eb0
mov edi, dword [ebp - 8]
mov ebx, dword [ebp - 0xc]
mov edx, dword [ebp - 0x18]
cmp edi, 1
je 0x10037ebe
cmp dword [esi + 0x8644], 0
je 0x10037ed9
mov ecx, dword [ebp - 0x14]
test ecx, ecx
je 0x10037ece
cmp dword [esi + 0x863c], 0
je 0x10037edc
mov eax, dword [edx - 0x80]
add dword [edx - 0x100], eax
jmp 0x10037edc
mov ecx, dword [ebp - 0x14]
cmp edi, dword [ebp - 0x34]
je 0x10037eea
cmp dword [esi + 0x8640], 0
je 0x10037f06
test ecx, ecx
je 0x10037ef7
cmp dword [esi + 0x863c], 0
je 0x10037f06
mov ebx, dword [ebp - 0x20]
mov eax, dword [edx]
mov dword [esi + ebx*8 + 0x8658], eax
mov ebx, dword [ebp - 0xc]
cmp edi, dword [ebp - 4]
je 0x10037f14
cmp dword [esi + 0x8638], 0
je 0x10037f2e
test ecx, ecx
je 0x10037f21
cmp dword [esi + 0x863c], 0
je 0x10037f2e
mov eax, dword [ebp - 0x20]
mov eax, dword [esi + eax*8 + 0x8658]
add dword [edx - 0x80], eax
cmp edi, 1
je 0x10037f3c
cmp dword [esi + 0x8644], 0
je 0x10037f57
mov edx, dword [ebp - 0x10]
cmp ecx, edx
je 0x10037f4c
cmp dword [esi + 0x863c], 0
je 0x10037f5a
mov eax, dword [ebx - 0x40]
add dword [ebx - 0xc0], eax
jmp 0x10037f5a
mov edx, dword [ebp - 0x10]
cmp edi, dword [ebp - 0x34]
je 0x10037f68
cmp dword [esi + 0x8640], 0
je 0x10037f85
cmp ecx, edx
je 0x10037f75
cmp dword [esi + 0x863c], 0
je 0x10037f85
mov eax, dword [ebx + 0x40]
mov ebx, dword [ebp - 0x20]
mov dword [esi + ebx*8 + 0x865c], eax
mov ebx, dword [ebp - 0xc]
cmp edi, dword [ebp - 4]
je 0x10037f93
cmp dword [esi + 0x8638], 0
je 0x10037fad
cmp ecx, edx
je 0x10037fa0
cmp dword [esi + 0x863c], 0
je 0x10037fad
mov eax, dword [ebp - 0x20]
mov eax, dword [esi + eax*8 + 0x865c]
add dword [ebx - 0x40], eax
cmp dword [ebp - 0x38], 0
jne 0x10038058
cmp dword [esi + 0x855c], 0
jne 0x10038007
mov ebx, dword [ebp - 0xc]
mov eax, dword [ebx - 0x40]
mov ecx, dword [ebx - 0x100]
mov edx, dword [ebx - 0xc0]
add ecx, eax
mov edi, dword [ebx - 0x80]
mov ebx, ecx
sub edi, edx
mov dword [ebp - 0x4c], ecx
sub ebx, edi
sar ebx, 1
mov ecx, ebx
sub ebx, edx
mov edx, dword [ebp - 0xc]
sub ecx, eax
mov eax, dword [ebp - 0x4c]
sub eax, ebx
mov dword [edx - 0x100], eax
lea eax, [ecx + edi]
mov dword [edx - 0x80], eax
mov dword [edx - 0xc0], ecx
mov dword [edx - 0x40], ebx
jmp 0x10038055
mov edx, dword [ebp - 0xc]
mov eax, dword [edx - 0x40]
mov ebx, dword [edx - 0x100]
mov ecx, dword [edx - 0xc0]
mov edi, dword [edx - 0x80]
sar eax, 1
sar ecx, 1
sar ebx, 1
add ebx, eax
sar edi, 1
sub edi, ecx
mov dword [ebp - 0x4c], ecx
mov edx, ebx
sub edx, edi
sar edx, 1
mov ecx, edx
sub edx, dword [ebp - 0x4c]
sub ecx, eax
mov eax, dword [ebp - 0xc]
sub ebx, edx
mov dword [eax - 0x100], ebx
lea eax, [ecx + edi]
mov ebx, dword [ebp - 0xc]
mov dword [ebx - 0x80], eax
mov dword [ebx - 0xc0], ecx
mov dword [ebx - 0x40], edx
mov edi, dword [ebp - 8]
mov ecx, dword [ebp - 0x20]
inc ecx
mov dword [ebp - 0x20], ecx
cmp ecx, dword [ebp - 0x48]
jl 0x100373f0
xor ecx, ecx
mov eax, 2
cmp dword [ebp - 0x44], 2
cmove ecx, eax
xor eax, eax
mov dword [ebp - 0x48], ecx
mov dword [ebp - 0x24], eax
test ecx, ecx
je 0x1003932a
nop word [eax + eax]
cmp dword [ebp - 0x30], 0
mov ebx, dword [esi + eax*4 + 0x8760]
mov ecx, dword [esi + eax*4 + 0x87a0]
mov dword [ebp - 0x20], ebx
mov dword [ebp - 0x18], ecx
je 0x100384d9
mov eax, dword [ebp - 0x14]
test eax, eax
je 0x100380be
cmp dword [esi + 0x863c], 0
je 0x10038124
test edi, edi
je 0x100380cb
cmp dword [esi + 0x8638], 0
je 0x100380e4
lea eax, [ecx + 0xc]
push eax
lea eax, [ecx + 8]
push eax
lea edx, [ecx + 4]
call fcn.100358b0
mov ecx, dword [ebp - 0x18]
add esp, 8
mov eax, dword [ebp - 0x14]
test eax, eax
je 0x100380f1
cmp dword [esi + 0x863c], 0
je 0x10038124
cmp edi, dword [ebp - 4]
je 0x100380ff
cmp dword [esi + 0x8638], 0
je 0x10038124
lea eax, [ecx - 0xe8]
push eax
lea eax, [ecx - 0xe4]
lea edx, [ecx - 0xf0]
add ecx, 0xffffff14
push eax
call fcn.100358b0
mov eax, dword [ebp - 0x14]
add esp, 8
mov edx, dword [ebp - 0x10]
cmp eax, edx
je 0x10038138
cmp dword [esi + 0x863c], 0
je 0x100381a6
test edi, edi
je 0x10038145
cmp dword [esi + 0x8638], 0
je 0x1003816d
lea eax, [ebx + 0xe4]
push eax
lea eax, [ebx + 0xe0]
push eax
lea edx, [ebx + 0xec]
lea ecx, [ebx + 0xe8]
call fcn.100358b0
mov eax, dword [ebp - 0x14]
add esp, 8
mov edx, dword [ebp - 0x10]
cmp eax, edx
je 0x1003817a
cmp dword [esi + 0x863c], 0
je 0x100381a6
mov ecx, dword [ebp - 4]
cmp edi, ecx
je 0x1003818a
cmp dword [esi + 0x8638], 0
je 0x100381b1
lea eax, [ebx - 0x10]
push eax
lea eax, [ebx - 0xc]
push eax
lea edx, [ebx - 8]
lea ecx, [ebx - 4]
call fcn.100358b0
mov eax, dword [ebp - 0x14]
add esp, 8
mov edx, dword [ebp - 0x10]
mov ecx, dword [ebp - 4]
cmp edi, ecx
je 0x1003838f
cmp eax, edx
je 0x100383a0
test eax, eax
je 0x1003820b
cmp dword [esi + 0x863c], 0
jne 0x1003820b
test edi, edi
je 0x100381da
cmp dword [esi + 0x8638], 0
jne 0x100381da
mov edi, 0xffffff00
jmp 0x100381dc
xor edi, edi
mov esi, dword [ebp - 0x18]
nop
lea ecx, [edi + 0xc0]
push 0
lea edx, [edi + esi]
add ecx, ebx
call fcn.100359a0
add edi, 0x100
add esp, 4
cmp edi, 0x100
jl 0x100381e0
mov edi, dword [ebp - 8]
jmp 0x10038286
test edi, edi
je 0x10038221
cmp dword [esi + 0x8638], 0
jne 0x10038221
mov dword [ebp - 0x44], 0xffffff00
jmp 0x10038226
xor eax, eax
mov dword [ebp - 0x44], eax
mov ebx, dword [ebp - 0x18]
mov esi, dword [ebp - 0x44]
nop dword [eax]
lea eax, [ebx + 0x104]
add eax, esi
lea edx, [ebx + 0x10]
push eax
lea eax, [ebx + 0x100]
add edx, esi
add eax, esi
lea ecx, [ebx + 0x14]
push eax
add ecx, esi
call fcn.100358b0
lea eax, [ebx + 0x10c]
add eax, esi
lea edx, [ebx + 0x18]
push eax
lea eax, [ebx + 0x108]
add edx, esi
add eax, esi
lea ecx, [ebx + 0x1c]
push eax
add ecx, esi
call fcn.100358b0
add esi, 0x100
add esp, 0x10
cmp esi, 0x100
jl 0x10038230
mov ebx, dword [ebp - 0x20]
mov esi, dword [ebp - 0x1c]
test edi, edi
je 0x100382c3
cmp dword [esi + 0x8638], 0
jne 0x100382c3
mov edi, dword [ebp - 0x18]
mov esi, 3
lea ebx, [edi - 0x100]
push 0
lea edx, [ebx + 0x40]
mov ecx, ebx
call fcn.100359a0
add esp, 4
add ebx, 0x40
sub esi, 1
jne 0x100382a4
mov esi, dword [ebp - 0x1c]
jmp 0x10038354
cmp dword [ebp - 0x14], 0
mov edi, dword [ebp - 0x18]
je 0x10038307
cmp dword [esi + 0x863c], 0
jne 0x10038307
lea eax, [edi + 8]
push eax
push edi
lea edx, [ebx + 0xe0]
lea ecx, [ebx + 0xe8]
call fcn.100358b0
lea eax, [edi + 0xc]
push eax
lea eax, [edi + 4]
push eax
lea edx, [ebx + 0xe4]
lea ecx, [ebx + 0xec]
call fcn.100358b0
add esp, 0x10
xor ebx, ebx
nop dword [eax]
lea eax, [ebx + 0x48]
add eax, edi
lea edx, [ebx + 0x20]
push eax
lea eax, [ebx + 0x40]
add edx, edi
add eax, edi
lea ecx, [ebx + 0x28]
push eax
add ecx, edi
call fcn.100358b0
lea eax, [ebx + 0x4c]
add eax, edi
lea edx, [ebx + 0x24]
push eax
lea eax, [ebx + 0x44]
add edx, edi
add eax, edi
lea ecx, [ebx + 0x2c]
push eax
add ecx, edi
call fcn.100358b0
add ebx, 0x40
add esp, 0x10
cmp ebx, 0xc0
jl 0x10038310
mov ecx, dword [ebp - 0x18]
lea edx, [edi + 0x40]
mov ebx, dword [ebp - 0x20]
push 0
call fcn.100359a0
push 0
lea edx, [edi + 0x80]
lea ecx, [edi + 0x40]
call fcn.100359a0
mov ecx, dword [ebp - 0x18]
sub ecx, 0xffffff80
push 0
lea edx, [ecx + 0x40]
call fcn.100359a0
mov edi, dword [ebp - 8]
add esp, 0xc
mov ecx, dword [ebp - 4]
jmp 0x10038393
cmp eax, edx
je 0x100383a0
cmp dword [esi + 0x863c], 0
je 0x10038422
test edi, edi
je 0x100383b2
cmp dword [esi + 0x8638], 0
mov eax, 0xfffffff0
je 0x100383b7
mov eax, 0x30
cmp edi, ecx
mov dword [ebp - 0x44], eax
mov edx, 0x70
mov ecx, 0xfffffff0
cmove edx, ecx
mov dword [ebp - 0x4c], edx
cmp eax, edx
jge 0x10038422
mov esi, eax
mov edi, edx
lea eax, [esi + 0x4b]
lea eax, [ebx + eax*4]
push eax
lea eax, [esi + 0x4a]
lea eax, [ebx + eax*4]
lea edx, [esi + 0xe]
lea ecx, [esi + 0xf]
push eax
lea edx, [ebx + edx*4]
lea ecx, [ebx + ecx*4]
call fcn.100358b0
lea eax, [esi + 0x49]
lea eax, [ebx + eax*4]
push eax
lea eax, [esi + 0x48]
lea eax, [ebx + eax*4]
lea edx, [esi + 0xc]
lea ecx, [esi + 0xd]
push eax
lea edx, [ebx + edx*4]
lea ecx, [ebx + ecx*4]
call fcn.100358b0
add esi, 0x40
add esp, 0x10
cmp esi, edi
jl 0x100383d4
mov esi, dword [ebp - 0x1c]
mov edi, dword [ebp - 8]
mov ecx, dword [ebp - 4]
cmp edi, ecx
je 0x10038436
cmp dword [esi + 0x8638], 0
je 0x100384dc
mov edx, dword [ebp - 0x14]
cmp edx, dword [ebp - 0x10]
je 0x100384df
test edx, edx
je 0x1003848a
cmp dword [esi + 0x863c], 0
jne 0x1003848a
mov ecx, dword [ebp - 0x18]
lea edx, [ebx - 0xc]
lea eax, [ecx - 0xe4]
push eax
lea eax, [ecx - 0xec]
push eax
lea ecx, [ebx - 4]
call fcn.100358b0
mov ecx, dword [ebp - 0x18]
lea edx, [ebx - 0x10]
lea eax, [ecx - 0xe8]
push eax
lea eax, [ecx - 0xf0]
push eax
lea ecx, [ebx - 8]
call fcn.100358b0
add esp, 0x10
mov edi, dword [ebp - 0x18]
mov esi, 0xffffff00
lea eax, [edi + 0x5c]
add eax, esi
lea edx, [edi + 0x34]
push eax
lea eax, [edi + 0x54]
add edx, esi
add eax, esi
lea ecx, [edi + 0x3c]
push eax
add ecx, esi
call fcn.100358b0
lea eax, [edi + 0x58]
add eax, esi
lea edx, [edi + 0x30]
push eax
lea eax, [edi + 0x50]
add edx, esi
add eax, esi
lea ecx, [edi + 0x38]
push eax
add ecx, esi
call fcn.100358b0
add esi, 0x40
add esp, 0x10
cmp esi, 0xffffffc0
jl 0x10038492
mov esi, dword [ebp - 0x1c]
mov edi, dword [ebp - 8]
mov ecx, dword [ebp - 4]
mov edx, dword [ebp - 0x14]
test edx, edx
je 0x100386d2
cmp edi, ecx
mov eax, 0x70
mov ecx, 0x30
cmove eax, ecx
test edi, edi
mov ecx, 0xfffffff0
mov edi, 0x30
cmove ecx, edi
cmp ecx, eax
jge 0x100386d2
sub eax, ecx
lea esi, [ecx + 2]
dec eax
lea esi, [ebx + esi*4]
shr eax, 6
inc eax
mov dword [ebp - 0x44], eax
nop dword [eax]
lea ecx, [esi - 8]
call fcn.100398a0
mov ecx, dword [esi - 8]
add ecx, dword [esi + 4]
mov edx, dword [esi - 4]
mov edi, ecx
sub edx, dword [esi]
mov ebx, dword [esi + 0x30]
sub edi, edx
sub ebx, dword [esi + 0x2c]
inc edi
mov dword [ebp - 0x4c], ecx
mov eax, dword [ebp - 0x4c]
sar edi, 1
mov ecx, edi
sub edi, dword [esi]
sub ecx, dword [esi + 4]
sub eax, edi
mov dword [esi - 8], eax
mov dword [esi], ecx
mov dword [esi + 4], edi
lea eax, [ecx + edx]
mov edx, dword [esi + 0x34]
mov ecx, dword [esi + 0x28]
add ecx, edx
mov dword [esi - 4], eax
mov dword [ebp - 0x4c], ecx
mov edi, ecx
mov dword [ebp - 0xc], edx
mov ecx, ebx
sar ecx, 1
mov edx, ecx
sar edi, 1
sub edx, dword [esi + 0x30]
lea eax, [edx + 2]
lea eax, [edx + eax*2]
sar eax, 3
sub eax, edi
add dword [ebp - 0xc], eax
mov eax, dword [ebp - 0xc]
lea eax, [eax + eax*2]
add eax, 3
sar eax, 2
sub edx, eax
lea eax, [edx + 1]
sub edx, ecx
lea eax, [eax + eax*2]
mov dword [esi + 0x30], edx
sar eax, 3
add dword [ebp - 0xc], eax
mov ecx, dword [ebp - 0xc]
lea eax, [ebx + edx]
mov ebx, dword [esi + 8]
add ecx, edi
mov edi, dword [esi + 0x14]
sub ebx, edi
mov edx, dword [esi + 0xc]
add edx, dword [esi + 0x10]
mov dword [esi + 0x2c], eax
mov eax, dword [ebp - 0x4c]
sub eax, ecx
mov dword [esi + 0x34], ecx
mov dword [esi + 0x28], eax
lea eax, [ebx + 1]
sar eax, 1
add edi, eax
lea eax, [edx + 2]
lea eax, [edx + eax*2]
mov dword [ebp - 0x4c], edi
mov ecx, dword [ebp - 0x4c]
lea edi, [edx + 1]
sar eax, 3
sub ebx, eax
sar edi, 1
sub edi, dword [esi + 0x10]
lea eax, [ebx + 2]
lea eax, [ebx + eax*2]
sar eax, 3
add edx, eax
lea eax, [ecx + 2]
lea eax, [ecx + eax*2]
sar eax, 3
lea esi, [esi + 0x100]
sub edi, eax
lea eax, [edi + 2]
lea eax, [edi + eax*2]
sar eax, 3
add ecx, eax
mov eax, ebx
sar eax, 1
add edi, eax
lea eax, [edx + 1]
sar eax, 1
sub ebx, edi
sub ecx, eax
mov dword [esi - 0xf0], edi
mov edi, dword [esi - 0xdc]
mov dword [esi - 0xf8], ebx
mov ebx, dword [esi - 0xe8]
sub ebx, edi
mov dword [esi - 0xec], ecx
lea eax, [ecx + edx]
mov edx, dword [esi - 0xe0]
add edx, dword [esi - 0xe4]
mov dword [esi - 0xf4], eax
lea eax, [ebx + 1]
sar eax, 1
add edi, eax
lea eax, [edx + 2]
lea eax, [edx + eax*2]
mov dword [ebp - 0x4c], edi
mov ecx, dword [ebp - 0x4c]
lea edi, [edx + 1]
sar eax, 3
sub ebx, eax
sar edi, 1
sub edi, dword [esi - 0xe4]
lea eax, [ebx + 2]
lea eax, [ebx + eax*2]
sar eax, 3
add edx, eax
lea eax, [ecx + 2]
lea eax, [ecx + eax*2]
sar eax, 3
sub edi, eax
lea eax, [edi + 2]
lea eax, [edi + eax*2]
sar eax, 3
add ecx, eax
mov eax, ebx
sar eax, 1
add edi, eax
lea eax, [edx + 1]
sar eax, 1
sub ebx, edi
sub ecx, eax
mov dword [esi - 0xe8], ebx
sub dword [ebp - 0x44], 1
mov dword [esi - 0xdc], ecx
mov dword [esi - 0xe4], edi
lea eax, [ecx + edx]
mov dword [esi - 0xe0], eax
jne 0x10038520
mov esi, dword [ebp - 0x1c]
mov edx, dword [ebp - 0x14]
mov edi, dword [ebp - 8]
mov ebx, dword [ebp - 4]
cmp edx, dword [ebp - 0x10]
je 0x10038c49
xor eax, eax
mov ecx, 0x40
cmp edi, ebx
cmove ecx, eax
mov eax, edi
neg eax
sbb eax, eax
and eax, 0xffffffc0
mov dword [ebp - 0x4c], eax
cmp eax, ecx
jge 0x10038c49
mov esi, dword [ebp - 0x4c]
sub ecx, esi
mov eax, dword [ebp - 0x18]
dec ecx
shr ecx, 6
inc ecx
lea edx, [esi + 2]
mov esi, ecx
lea edx, [eax + edx*4]
mov dword [ebp - 0xc], edx
nop dword [eax]
lea edi, [edx - 8]
mov ecx, edi
call fcn.100398a0
mov ecx, dword [edi]
mov edx, dword [ebp - 0xc]
mov eax, dword [edx + 4]
add ecx, eax
mov ebx, dword [edx]
mov edi, ecx
mov edx, dword [edx - 4]
sub edx, ebx
mov dword [ebp - 0x4c], ecx
sub edi, edx
inc edi
sar edi, 1
mov ecx, edi
sub edi, ebx
mov ebx, dword [ebp - 0xc]
sub ecx, eax
mov eax, dword [ebp - 0x4c]
sub eax, edi
mov dword [ebx - 8], eax
lea eax, [ecx + edx]
mov edx, dword [ebx + 0x34]
mov dword [ebx - 4], eax
mov eax, dword [ebx + 0x30]
mov dword [ebx], ecx
mov ecx, dword [ebx + 0x28]
add ecx, edx
mov dword [ebp - 0x2c], edx
mov edx, dword [ebp - 0xc]
mov dword [ebx + 4], edi
mov ebx, eax
mov dword [ebp - 0x4c], ecx
mov edi, ecx
sar edi, 1
sub ebx, dword [edx + 0x2c]
mov ecx, ebx
sar ecx, 1
mov edx, ecx
sub edx, eax
lea eax, [edx + 2]
lea eax, [edx + eax*2]
sar eax, 3
sub eax, edi
add dword [ebp - 0x2c], eax
mov eax, dword [ebp - 0x2c]
lea eax, [eax + eax*2]
add eax, 3
sar eax, 2
sub edx, eax
lea eax, [edx + 1]
sub edx, ecx
lea eax, [eax + eax*2]
sar eax, 3
add dword [ebp - 0x2c], eax
mov eax, dword [ebp - 0xc]
mov ecx, dword [ebp - 0x2c]
add ecx, edi
mov dword [eax + 0x30], edx
mov dword [eax + 0x34], ecx
lea eax, [ebx + edx]
mov edx, dword [ebp - 0xc]
mov edi, dword [edx + 0x14]
mov ebx, dword [edx + 8]
mov dword [edx + 0x2c], eax
sub ebx, edi
mov eax, dword [ebp - 0x4c]
sub eax, ecx
mov ecx, dword [edx + 0x10]
mov dword [edx + 0x28], eax
mov edx, dword [edx + 0xc]
lea eax, [ebx + 1]
add edx, ecx
sar eax, 1
add edi, eax
mov dword [ebp - 0x4c], edi
lea edi, [edx + 1]
sar edi, 1
lea eax, [edx + 2]
sub edi, ecx
lea eax, [edx + eax*2]
mov ecx, dword [ebp - 0x4c]
sar eax, 3
sub ebx, eax
lea eax, [ebx + 2]
lea eax, [ebx + eax*2]
sar eax, 3
add edx, eax
lea eax, [ecx + 2]
lea eax, [ecx + eax*2]
sar eax, 3
sub edi, eax
lea eax, [edi + 2]
lea eax, [edi + eax*2]
sar eax, 3
add ecx, eax
mov eax, ebx
sar eax, 1
add edi, eax
lea eax, [edx + 1]
sar eax, 1
sub ebx, edi
sub ecx, eax
lea eax, [ecx + edx]
mov edx, dword [ebp - 0xc]
mov dword [edx + 0xc], eax
mov dword [edx + 0x10], edi
mov edi, dword [edx + 0x24]
mov dword [edx + 8], ebx
mov ebx, dword [edx + 0x18]
sub ebx, edi
mov dword [edx + 0x14], ecx
mov ecx, dword [edx + 0x1c]
mov edx, dword [edx + 0x20]
add edx, ecx
lea eax, [ebx + 1]
sar eax, 1
add edi, eax
lea eax, [edx + 2]
mov dword [ebp - 0x4c], edi
lea eax, [edx + eax*2]
sar eax, 3
lea edi, [edx + 1]
sub ebx, eax
sar edi, 1
sub edi, ecx
mov ecx, dword [ebp - 0x4c]
lea eax, [ebx + 2]
lea eax, [ebx + eax*2]
sar eax, 3
add edx, eax
lea eax, [ecx + 2]
lea eax, [ecx + eax*2]
sar eax, 3
sub edi, eax
lea eax, [edi + 2]
lea eax, [edi + eax*2]
sar eax, 3
add ecx, eax
mov eax, ebx
sar eax, 1
add edi, eax
lea eax, [edx + 1]
sar eax, 1
sub ebx, edi
sub ecx, eax
lea eax, [ecx + edx]
mov edx, dword [ebp - 0xc]
mov dword [edx + 0x1c], edi
lea edi, [edx + 0x38]
mov dword [edx + 0x24], ecx
mov ecx, edi
mov dword [edx + 0x20], eax
mov dword [edx + 0x18], ebx
call fcn.100398a0
mov edx, dword [ebp - 0xc]
mov ecx, dword [edi]
mov eax, dword [edx + 0x44]
add ecx, eax
mov ebx, dword [edx + 0x40]
mov dword [ebp - 0x4c], ecx
mov edx, dword [edx + 0x3c]
mov edi, ecx
sub edx, ebx
sub edi, edx
inc edi
sar edi, 1
mov ecx, edi
sub edi, ebx
mov ebx, dword [ebp - 0xc]
sub ecx, eax
mov eax, dword [ebp - 0x4c]
sub eax, edi
mov dword [ebx + 0x38], eax
lea eax, [ecx + edx]
mov edx, dword [ebx + 0x74]
mov dword [ebx + 0x3c], eax
mov eax, dword [ebx + 0x70]
mov dword [ebx + 0x40], ecx
mov ecx, dword [ebx + 0x68]
add ecx, edx
mov dword [ebp - 0x2c], edx
mov edx, dword [ebp - 0xc]
mov dword [ebx + 0x44], edi
mov ebx, eax
mov dword [ebp - 0x4c], ecx
mov edi, ecx
sar edi, 1
sub ebx, dword [edx + 0x6c]
mov ecx, ebx
sar ecx, 1
mov edx, ecx
sub edx, eax
lea eax, [edx + 2]
lea eax, [edx + eax*2]
sar eax, 3
sub eax, edi
add dword [ebp - 0x2c], eax
mov eax, dword [ebp - 0x2c]
lea eax, [eax + eax*2]
add eax, 3
sar eax, 2
sub edx, eax
lea eax, [edx + 1]
sub edx, ecx
lea eax, [eax + eax*2]
sar eax, 3
add dword [ebp - 0x2c], eax
mov eax, dword [ebp - 0xc]
mov ecx, dword [ebp - 0x2c]
add ecx, edi
mov dword [eax + 0x70], edx
mov dword [eax + 0x74], ecx
lea eax, [ebx + edx]
mov edx, dword [ebp - 0xc]
mov edi, dword [edx + 0x54]
mov ebx, dword [edx + 0x48]
mov dword [edx + 0x6c], eax
sub ebx, edi
mov eax, dword [ebp - 0x4c]
sub eax, ecx
mov ecx, dword [edx + 0x50]
mov dword [edx + 0x68], eax
mov edx, dword [edx + 0x4c]
lea eax, [ebx + 1]
sar eax, 1
add edx, ecx
add edi, eax
mov dword [ebp - 0x4c], edi
lea eax, [edx + 2]
lea eax, [edx + eax*2]
sar eax, 3
lea edi, [edx + 1]
sub ebx, eax
sar edi, 1
sub edi, ecx
mov ecx, dword [ebp - 0x4c]
lea eax, [ebx + 2]
lea eax, [ebx + eax*2]
sar eax, 3
add edx, eax
lea eax, [ecx + 2]
lea eax, [ecx + eax*2]
sar eax, 3
sub edi, eax
lea eax, [edi + 2]
lea eax, [edi + eax*2]
sar eax, 3
add ecx, eax
mov eax, ebx
sar eax, 1
add edi, eax
lea eax, [edx + 1]
sar eax, 1
sub ebx, edi
sub ecx, eax
lea eax, [ecx + edx]
mov edx, dword [ebp - 0xc]
mov dword [edx + 0x4c], eax
mov dword [edx + 0x50], edi
mov edi, dword [edx + 0x64]
mov dword [edx + 0x48], ebx
mov ebx, dword [edx + 0x58]
sub ebx, edi
mov dword [edx + 0x54], ecx
mov ecx, dword [edx + 0x5c]
mov edx, dword [edx + 0x60]
add edx, ecx
lea eax, [ebx + 1]
sar eax, 1
add edi, eax
lea eax, [edx + 2]
mov dword [ebp - 0x4c], edi
lea eax, [edx + eax*2]
sar eax, 3
lea edi, [edx + 1]
sub ebx, eax
sar edi, 1
sub edi, ecx
mov ecx, dword [ebp - 0x4c]
lea eax, [ebx + 2]
lea eax, [ebx + eax*2]
sar eax, 3
add edx, eax
lea eax, [ecx + 2]
lea eax, [ecx + eax*2]
sar eax, 3
sub edi, eax
lea eax, [edi + 2]
lea eax, [edi + eax*2]
sar eax, 3
add ecx, eax
mov eax, ebx
sar eax, 1
add edi, eax
lea eax, [edx + 1]
sar eax, 1
sub ebx, edi
sub ecx, eax
lea eax, [ecx + edx]
mov edx, dword [ebp - 0xc]
mov dword [edx + 0x5c], edi
lea edi, [edx + 0x78]
mov dword [edx + 0x64], ecx
mov ecx, edi
mov dword [edx + 0x60], eax
mov dword [edx + 0x58], ebx
call fcn.100398a0
mov edx, dword [ebp - 0xc]
mov ecx, dword [edi]
mov eax, dword [edx + 0x84]
add ecx, eax
mov ebx, dword [edx + 0x80]
mov edi, ecx
mov edx, dword [edx + 0x7c]
sub edx, ebx
mov dword [ebp - 0x4c], ecx
sub edi, edx
inc edi
sar edi, 1
mov ecx, edi
sub ecx, eax
sub edi, ebx
mov ebx, dword [ebp - 0xc]
mov eax, dword [ebp - 0x4c]
sub eax, edi
mov dword [ebx + 0x78], eax
lea eax, [ecx + edx]
mov edx, dword [ebx + 0xb4]
mov dword [ebx + 0x7c], eax
mov eax, dword [ebx + 0xb0]
mov dword [ebx + 0x80], ecx
mov ecx, dword [ebx + 0xa8]
add ecx, edx
mov dword [ebx + 0x84], edi
mov ebx, eax
mov dword [ebp - 0x2c], edx
mov edx, dword [ebp - 0xc]
mov edi, ecx
mov dword [ebp - 0x4c], ecx
sar edi, 1
sub ebx, dword [edx + 0xac]
mov ecx, ebx
sar ecx, 1
mov edx, ecx
sub edx, eax
lea eax, [edx + 2]
lea eax, [edx + eax*2]
sar eax, 3
sub eax, edi
add dword [ebp - 0x2c], eax
mov eax, dword [ebp - 0x2c]
lea eax, [eax + eax*2]
add eax, 3
sar eax, 2
sub edx, eax
lea eax, [edx + 1]
sub edx, ecx
lea eax, [eax + eax*2]
sar eax, 3
add dword [ebp - 0x2c], eax
mov eax, dword [ebp - 0xc]
mov ecx, dword [ebp - 0x2c]
add ecx, edi
mov dword [eax + 0xb0], edx
mov dword [eax + 0xb4], ecx
lea eax, [ebx + edx]
mov edx, dword [ebp - 0xc]
mov edi, dword [edx + 0x94]
mov ebx, dword [edx + 0x88]
mov dword [edx + 0xac], eax
sub ebx, edi
mov eax, dword [ebp - 0x4c]
sub eax, ecx
mov ecx, dword [edx + 0x90]
mov dword [edx + 0xa8], eax
mov edx, dword [edx + 0x8c]
lea eax, [ebx + 1]
sar eax, 1
add edx, ecx
add edi, eax
mov dword [ebp - 0x4c], edi
lea eax, [edx + 2]
lea eax, [edx + eax*2]
sar eax, 3
lea edi, [edx + 1]
sub ebx, eax
sar edi, 1
sub edi, ecx
mov ecx, dword [ebp - 0x4c]
lea eax, [ebx + 2]
lea eax, [ebx + eax*2]
sar eax, 3
add edx, eax
lea eax, [ecx + 2]
lea eax, [ecx + eax*2]
sar eax, 3
sub edi, eax
lea eax, [edi + 2]
lea eax, [edi + eax*2]
sar eax, 3
add ecx, eax
mov eax, ebx
sar eax, 1
add edi, eax
lea eax, [edx + 1]
sar eax, 1
sub ebx, edi
sub ecx, eax
lea eax, [ecx + edx]
mov edx, dword [ebp - 0xc]
mov dword [edx + 0x8c], eax
mov dword [edx + 0x90], edi
mov edi, dword [edx + 0xa4]
mov dword [edx + 0x88], ebx
mov ebx, dword [edx + 0x98]
sub ebx, edi
mov dword [edx + 0x94], ecx
mov ecx, dword [edx + 0x9c]
mov edx, dword [edx + 0xa0]
add edx, ecx
lea eax, [ebx + 1]
sar eax, 1
add edi, eax
lea eax, [edx + 2]
mov dword [ebp - 0x4c], edi
lea eax, [edx + eax*2]
sar eax, 3
lea edi, [edx + 1]
sub ebx, eax
sar edi, 1
sub edi, ecx
mov ecx, dword [ebp - 0x4c]
lea eax, [ebx + 2]
lea eax, [ebx + eax*2]
sar eax, 3
add edx, eax
lea eax, [ecx + 2]
lea eax, [ecx + eax*2]
sar eax, 3
sub edi, eax
lea eax, [edi + 2]
lea eax, [edi + eax*2]
sar eax, 3
add ecx, eax
mov eax, ebx
sar eax, 1
add edi, eax
lea eax, [edx + 1]
sar eax, 1
sub ebx, edi
sub ecx, eax
lea eax, [ecx + edx]
mov edx, dword [ebp - 0xc]
mov dword [edx + 0xa0], eax
mov dword [edx + 0x98], ebx
mov dword [edx + 0xa4], ecx
mov dword [edx + 0x9c], edi
add edx, 0x100
mov dword [ebp - 0xc], edx
sub esi, 1
jne 0x10038720
mov esi, dword [ebp - 0x1c]
mov edi, dword [ebp - 8]
mov edx, dword [ebp - 0x14]
mov ebx, dword [ebp - 4]
cmp dword [ebp - 0x30], 2
jne 0x100391b3
cmp edi, 1
je 0x10038c61
cmp dword [esi + 0x8644], 0
je 0x10038c7f
test edx, edx
je 0x10038c6e
cmp dword [esi + 0x863c], 0
je 0x10038c7f
mov ecx, dword [ebp - 0x18]
mov eax, dword [ecx - 0x100]
sub dword [ecx - 0x200], eax
jmp 0x10038c82
mov ecx, dword [ebp - 0x18]
lea eax, [ebx - 1]
cmp edi, eax
je 0x10038c92
cmp dword [esi + 0x8640], 0
je 0x10038cae
test edx, edx
je 0x10038c9f
cmp dword [esi + 0x863c], 0
je 0x10038cae
mov ebx, dword [ebp - 0x24]
mov eax, dword [ecx]
mov dword [esi + ebx*8 + 0x8648], eax
mov ebx, dword [ebp - 4]
cmp edi, ebx
je 0x10038cbb
cmp dword [esi + 0x8638], 0
je 0x10038cd8
test edx, edx
je 0x10038cc8
cmp dword [esi + 0x863c], 0
je 0x10038cd8
mov eax, dword [ebp - 0x24]
mov eax, dword [esi + eax*8 + 0x8648]
sub dword [ecx - 0x100], eax
cmp edi, 1
je 0x10038ce6
cmp dword [esi + 0x8644], 0
je 0x10038d09
mov eax, dword [ebp - 0x10]
cmp edx, eax
je 0x10038cf6
cmp dword [esi + 0x863c], 0
je 0x10038d04
mov ebx, dword [ebp - 0x20]
mov eax, dword [ebx - 0x40]
sub dword [ebx - 0x140], eax
jmp 0x10038d0c
mov ebx, dword [ebp - 0x20]
jmp 0x10038d0f
mov ebx, dword [ebp - 0x20]
mov eax, dword [ebp - 0x10]
cmp edi, dword [ebp - 0x34]
je 0x10038d1d
cmp dword [esi + 0x8640], 0
je 0x10038d3d
cmp edx, eax
je 0x10038d2a
cmp dword [esi + 0x863c], 0
je 0x10038d3d
mov ecx, dword [ebp - 0x24]
mov eax, dword [ebx + 0xc0]
mov dword [esi + ecx*8 + 0x864c], eax
mov ecx, dword [ebp - 0x18]
cmp edi, dword [ebp - 4]
je 0x10038d4b
cmp dword [esi + 0x8638], 0
je 0x10038d66
cmp edx, dword [ebp - 0x10]
je 0x10038d59
cmp dword [esi + 0x863c], 0
je 0x10038d6f
mov eax, dword [ebp - 0x24]
mov eax, dword [esi + eax*8 + 0x864c]
sub dword [ebx - 0x40], eax
cmp edx, dword [ebp - 0x10]
je 0x1003904f
cmp dword [ebp - 0x28], 0
jne 0x10038d82
cmp dword [esi + 0x8638], 0
je 0x10038ef2
test edx, edx
je 0x10038e38
cmp dword [esi + 0x863c], 0
jne 0x10038e38
test edi, edi
je 0x10038da4
cmp dword [esi + 0x8638], 0
je 0x10038de6
mov edx, dword [ebx + 0xc0]
mov edi, dword [ecx]
lea eax, [edx + 2]
sar eax, 2
sub edi, eax
mov eax, edi
sar eax, 0xd
lea ecx, [edi + 1]
sar ecx, 1
add ecx, eax
mov eax, edi
sar eax, 9
add ecx, eax
mov eax, edi
sar eax, 5
add ecx, eax
sub edx, ecx
mov ecx, dword [ebp - 0x18]
mov dword [ebx + 0xc0], edx
lea eax, [edx + 2]
sar eax, 2
sub edi, eax
mov dword [ecx], edi
mov edi, dword [ebp - 8]
cmp edi, dword [ebp - 4]
je 0x10038df4
cmp dword [esi + 0x8638], 0
je 0x10038e38
mov edx, dword [ebx - 0x40]
mov edi, dword [ecx - 0x100]
lea eax, [edx + 2]
sar eax, 2
sub edi, eax
mov eax, edi
sar eax, 0xd
lea ecx, [edi + 1]
sar ecx, 1
add ecx, eax
mov eax, edi
sar eax, 9
add ecx, eax
mov eax, edi
sar eax, 5
add ecx, eax
sub edx, ecx
mov ecx, dword [ebp - 0x18]
mov dword [ebx - 0x40], edx
lea eax, [edx + 2]
sar eax, 2
sub edi, eax
mov dword [ecx - 0x100], edi
mov edi, dword [ebp - 8]
test edi, edi
je 0x10038e45
cmp dword [esi + 0x8638], 0
je 0x10038e89
mov edx, dword [ecx + 0x40]
mov edi, dword [ecx + 0x80]
lea eax, [edx + 2]
sar eax, 2
sub edi, eax
mov eax, edi
sar eax, 0xd
lea ecx, [edi + 1]
sar ecx, 1
add ecx, eax
mov eax, edi
sar eax, 9
add ecx, eax
mov eax, edi
sar eax, 5
add ecx, eax
sub edx, ecx
mov ecx, dword [ebp - 0x18]
lea eax, [edx + 2]
mov dword [ecx + 0x40], edx
sar eax, 2
sub edi, eax
mov dword [ecx + 0x80], edi
mov edi, dword [ebp - 8]
cmp edi, dword [ebp - 4]
je 0x10038e97
cmp dword [esi + 0x8638], 0
je 0x10038ed8
mov edx, dword [ecx - 0xc0]
mov edi, dword [ecx - 0x80]
lea eax, [edx + 2]
sar eax, 2
sub edi, eax
mov eax, edi
sar eax, 0xd
lea ecx, [edi + 1]
sar ecx, 1
add ecx, eax
mov eax, edi
sar eax, 9
add ecx, eax
mov eax, edi
sar eax, 5
add ecx, eax
sub edx, ecx
mov ecx, dword [ebp - 0x18]
lea eax, [edx + 2]
mov dword [ecx - 0xc0], edx
sar eax, 2
sub edi, eax
mov dword [ecx - 0x80], edi
cmp dword [ebp - 0x28], 0
jne 0x10039043
cmp dword [esi + 0x8638], 0
mov edx, dword [ebp - 0x14]
jne 0x10039043
test edx, edx
je 0x10038f87
cmp dword [esi + 0x863c], 0
jne 0x10038f87
mov eax, dword [ecx - 0x100]
mov ecx, dword [ecx]
mov edx, dword [ebx - 0x40]
mov edi, dword [ebx + 0xc0]
add edx, ecx
add edi, eax
mov dword [ebp - 0x2c], eax
lea eax, [edx + 1]
sar eax, 1
sub ecx, eax
lea eax, [edi + 1]
sar eax, 1
sub dword [ebp - 0x2c], eax
lea eax, [edx + 2]
sar eax, 2
sub edi, eax
mov dword [ebp - 0x40], ecx
mov eax, edi
sar eax, 0xd
lea ecx, [edi + 1]
sar ecx, 1
add ecx, eax
mov eax, edi
sar eax, 9
add ecx, eax
mov eax, edi
sar eax, 5
add ecx, eax
sub edx, ecx
mov ecx, dword [ebp - 0x40]
lea eax, [edx + 2]
sar eax, 2
sub edi, eax
lea eax, [edx + 1]
sar eax, 1
add ecx, eax
sub edx, ecx
mov dword [ebp - 0x40], ecx
lea eax, [edi + 1]
mov dword [ebx - 0x40], edx
sar eax, 1
mov edx, ecx
add dword [ebp - 0x2c], eax
sub edi, dword [ebp - 0x2c]
mov dword [ebx + 0xc0], edi
mov ebx, dword [ebp - 0x2c]
jmp 0x10038fbb
mov ebx, dword [ecx - 0x100]
mov edx, dword [ecx]
lea eax, [ebx + 2]
sar eax, 2
sub edx, eax
mov eax, edx
sar eax, 0xd
lea ecx, [edx + 1]
sar ecx, 1
add ecx, eax
mov eax, edx
sar eax, 9
add ecx, eax
mov eax, edx
sar eax, 5
add ecx, eax
sub ebx, ecx
lea eax, [ebx + 2]
sar eax, 2
sub edx, eax
mov eax, dword [ebp - 0x18]
mov dword [eax - 0x100], ebx
mov dword [eax], edx
mov ecx, dword [eax + 0x80]
mov edx, dword [eax - 0xc0]
mov ebx, dword [eax - 0x80]
add edx, ecx
mov edi, dword [eax + 0x40]
add edi, ebx
lea eax, [edx + 1]
sar eax, 1
sub ecx, eax
lea eax, [edi + 1]
sar eax, 1
sub ebx, eax
mov dword [ebp - 0x4c], ecx
lea eax, [edx + 2]
sar eax, 2
sub edi, eax
mov eax, edi
sar eax, 0xd
lea ecx, [edi + 1]
sar ecx, 1
add ecx, eax
mov eax, edi
sar eax, 9
add ecx, eax
mov eax, edi
sar eax, 5
add ecx, eax
sub edx, ecx
mov ecx, dword [ebp - 0x4c]
lea eax, [edx + 2]
sar eax, 2
sub edi, eax
lea eax, [edx + 1]
sar eax, 1
add ecx, eax
sub edx, ecx
lea eax, [edi + 1]
sar eax, 1
add ebx, eax
mov eax, dword [ebp - 0x18]
sub edi, ebx
mov dword [eax - 0xc0], edx
mov dword [eax + 0x40], edi
mov dword [eax - 0x80], ebx
mov dword [eax + 0x80], ecx
cmp dword [esi + 0x863c], 0
mov edi, dword [ebp - 8]
je 0x100390a4
cmp dword [ebp - 0x28], 0
mov ebx, dword [ebp - 0x20]
jne 0x100390a7
cmp dword [esi + 0x8638], 0
jne 0x100390a7
mov edx, dword [ebx - 0x40]
mov edi, dword [ebx + 0xc0]
lea eax, [edx + 2]
sar eax, 2
sub edi, eax
mov eax, edi
sar eax, 0xd
lea ecx, [edi + 1]
sar ecx, 1
add ecx, eax
mov eax, edi
sar eax, 9
add ecx, eax
mov eax, edi
sar eax, 5
add ecx, eax
sub edx, ecx
mov dword [ebx - 0x40], edx
lea eax, [edx + 2]
sar eax, 2
sub edi, eax
mov dword [ebx + 0xc0], edi
mov edi, dword [ebp - 8]
jmp 0x100390a7
mov ebx, dword [ebp - 0x20]
cmp edi, 1
je 0x100390b5
cmp dword [esi + 0x8644], 0
je 0x100390d6
mov edx, dword [ebp - 0x14]
test edx, edx
je 0x100390c5
cmp dword [esi + 0x863c], 0
je 0x100390d9
mov ecx, dword [ebp - 0x18]
mov eax, dword [ecx - 0x100]
add dword [ecx - 0x200], eax
jmp 0x100390dc
mov edx, dword [ebp - 0x14]
mov ecx, dword [ebp - 0x18]
cmp edi, dword [ebp - 0x34]
je 0x100390ea
cmp dword [esi + 0x8640], 0
je 0x10039106
test edx, edx
je 0x100390f7
cmp dword [esi + 0x863c], 0
je 0x10039106
mov ebx, dword [ebp - 0x24]
mov eax, dword [ecx]
mov dword [esi + ebx*8 + 0x8658], eax
mov ebx, dword [ebp - 0x20]
cmp edi, dword [ebp - 4]
je 0x10039114
cmp dword [esi + 0x8638], 0
je 0x10039131
test edx, edx
je 0x10039121
cmp dword [esi + 0x863c], 0
je 0x10039131
mov eax, dword [ebp - 0x24]
mov eax, dword [esi + eax*8 + 0x8658]
add dword [ecx - 0x100], eax
cmp edi, 1
je 0x1003913f
cmp dword [esi + 0x8644], 0
je 0x1003915a
mov ecx, dword [ebp - 0x10]
cmp edx, ecx
je 0x1003914f
cmp dword [esi + 0x863c], 0
je 0x1003915d
mov eax, dword [ebx - 0x40]
add dword [ebx - 0x140], eax
jmp 0x1003915d
mov ecx, dword [ebp - 0x10]
cmp edi, dword [ebp - 0x34]
je 0x1003916b
cmp dword [esi + 0x8640], 0
je 0x1003918b
cmp edx, ecx
je 0x10039178
cmp dword [esi + 0x863c], 0
je 0x1003918b
mov eax, dword [ebx + 0xc0]
mov ebx, dword [ebp - 0x24]
mov dword [esi + ebx*8 + 0x865c], eax
mov ebx, dword [ebp - 0x20]
cmp edi, dword [ebp - 4]
je 0x10039199
cmp dword [esi + 0x8638], 0
je 0x100391b3
cmp edx, ecx
je 0x100391a6
cmp dword [esi + 0x863c], 0
je 0x100391b3
mov eax, dword [ebp - 0x24]
mov eax, dword [esi + eax*8 + 0x865c]
add dword [ebx - 0x40], eax
cmp dword [ebp - 0x38], 0
jne 0x1003931a
cmp dword [esi + 0x855c], 0
jne 0x10039251
mov ebx, dword [ebp - 0x20]
mov eax, dword [ebx - 0xc0]
mov ecx, dword [ebx - 0x200]
mov edx, dword [ebx - 0x1c0]
add ecx, eax
mov edi, dword [ebx - 0x100]
mov ebx, ecx
sub edi, edx
mov dword [ebp - 0x4c], ecx
sub ebx, edi
sar ebx, 1
mov ecx, ebx
sub ebx, edx
mov edx, dword [ebp - 0x20]
sub ecx, eax
mov eax, dword [ebp - 0x4c]
sub eax, ebx
mov dword [edx - 0x200], eax
lea eax, [ecx + edi]
mov edi, edx
mov edx, dword [edi - 0x80]
mov dword [edi - 0xc0], ebx
mov ebx, dword [edi - 0x180]
add ebx, dword [edi - 0x40]
mov dword [edi - 0x1c0], ecx
mov ecx, dword [edi - 0x140]
sub edx, ecx
mov dword [ebp - 0x20], ebx
sub dword [ebp - 0x20], edx
sar dword [ebp - 0x20], 1
mov esi, dword [ebp - 0x20]
sub esi, dword [edi - 0x40]
mov dword [edi - 0x100], eax
mov eax, dword [ebp - 0x20]
sub eax, ecx
mov dword [ebp - 0x2c], esi
mov ecx, esi
add edx, ecx
jmp 0x100392e5
mov edx, dword [ebp - 0x20]
mov eax, dword [edx - 0xc0]
mov ebx, dword [edx - 0x200]
mov ecx, dword [edx - 0x1c0]
mov edi, dword [edx - 0x100]
sar eax, 1
sar ecx, 1
sar ebx, 1
add ebx, eax
sar edi, 1
sub edi, ecx
mov dword [ebp - 0x4c], ecx
mov edx, ebx
sub edx, edi
sar edx, 1
mov ecx, edx
sub edx, dword [ebp - 0x4c]
sub ecx, eax
sub ebx, edx
mov eax, dword [ebp - 0x20]
mov dword [eax - 0x200], ebx
lea eax, [ecx + edi]
mov edi, dword [ebp - 0x20]
mov ebx, dword [edi - 0x180]
mov dword [edi - 0x100], eax
mov eax, dword [edi - 0x40]
mov dword [edi - 0x1c0], ecx
mov ecx, dword [edi - 0x80]
mov dword [edi - 0xc0], edx
mov edx, dword [edi - 0x140]
sar eax, 1
sar edx, 1
sar ebx, 1
add ebx, eax
sar ecx, 1
sub ecx, edx
mov dword [ebp - 0x20], ebx
sub dword [ebp - 0x20], ecx
sar dword [ebp - 0x20], 1
mov esi, dword [ebp - 0x20]
sub esi, eax
mov eax, dword [ebp - 0x20]
sub eax, edx
mov dword [ebp - 0x2c], esi
mov edx, esi
add edx, ecx
mov ecx, esi
mov esi, dword [ebp - 0x1c]
sub ebx, eax
mov dword [edi - 0x180], ebx
mov dword [edi - 0x80], edx
mov dword [edi - 0x140], ecx
mov dword [edi - 0x40], eax
mov ecx, dword [edi - 0x200]
sub ebx, ecx
mov dword [edi - 0x180], ebx
lea eax, [ebx + 1]
sar eax, 1
add eax, ecx
mov dword [edi - 0x200], eax
mov edi, dword [ebp - 8]
mov eax, dword [ebp - 0x24]
inc eax
mov dword [ebp - 0x24], eax
cmp eax, dword [ebp - 0x48]
jl 0x10038090
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret