Function at 0x470110
Capabilities:
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
push 0xffffffffffffffff
mov eax, dword fs:[0]
push 0x4b1890
push eax
mov eax, 0x1f4cc
mov dword fs:[0], esp
call fcn.0044c4c0
push ebx
push ebp
push esi
push edi
mov dword [esp + 0x1f4e4], 1
call sub.MFC42.DLL_AfxGetAppModuleState
mov eax, dword [eax + 4]
lea ecx, [esp + 0x3a8]
push ecx
mov eax, dword [eax + 0xd4]
push eax
call dword [sym.imp.BasicCtrlDll.dll_int___cdecl_GetCurrentUin_struct_IQQCore___unsigned_long_int__]
mov edx, dword [esp + 0x3b0]
add esp, 8
push edx
call sub.WSOCK32.dll_htonl
mov dword [esp + 0x3a8], eax
mov eax, dword [esp + 0x1f4f0]
push 0x10
lea ecx, [esp + 0x87c]
push eax
push ecx
call sub.MSVCRT.dll_memcpy
add esp, 0xc
call sub.MFC42.DLL_AfxGetAppModuleState
mov edx, dword [eax + 4]
xor eax, eax
lea ecx, [esp + 0x774]
push 5
mov al, byte [edx + 0xcf]
lea edx, [esp + 0x88c]
mov byte [esp + 0x778], al
mov eax, dword [esp + 0x3ac]
push ecx
push edx
mov dword [esp + 0x781], eax
call fcn.0047c29a
mov ebp, dword [esp + 0x1f50c]
lea eax, [esp + 0x884]
push 0x20
push eax
push ebp
call fcn.0047c29a
mov esi, dword [sym.imp.MSVCRT.dll_rand]
add esp, 0x18
call esi
sub al, 0x78
mov byte [esp + 0x874], al
je 0x4701e8
lea ecx, [esp + 0x888]
lea esi, [esp + 0x864]
sub ecx, ebp
mov eax, ebp
sub esi, ebp
mov edi, 0x10
mov dl, byte [ecx + eax]
mov bl, byte [eax]
xor dl, bl
mov byte [esi + eax], dl
inc eax
dec edi
jne 0x47020e
mov al, 0xf1
lea ecx, [esp + 0x4e20]
mov byte [esp + 0x39a], al
mov byte [esp + 0x39d], al
mov dword [esp + 0x30], ecx
lea eax, [esp + 0x4d1c]
lea ecx, [esp + 0x390]
lea edx, [esp + 0x4f24]
mov edi, 9
xor ebx, ebx
lea esi, [esp + 0x4d1c]
mov dword [esp + 0x14], eax
dec ecx
mov byte [esp + 0x390], 0x77
mov byte [esp + 0x391], 0x29
mov byte [esp + 0x392], 0x84
mov byte [esp + 0x393], 0xbe
mov byte [esp + 0x394], 0x6c
mov byte [esp + 0x395], 0xe1
mov byte [esp + 0x396], 0xae
mov byte [esp + 0x397], 0xd6
mov byte [esp + 0x398], 0x90
mov byte [esp + 0x399], 0x52
mov byte [esp + 0x39b], 0x49
mov byte [esp + 0x39c], 0xbb
mov byte [esp + 0x39e], 0xeb
mov byte [esp + 0x39f], 0xe9
mov byte [esp + 0x3a0], 0xa6
mov byte [esp + 0x3a1], 0xb3
mov dword [esp + 0x784], edx
mov dword [esp + 0x10], edi
mov word [esp + 0x4d2c], bx
mov eax, 1
dec esi
mov dl, byte [ecx + eax]
mov byte [esi + eax], dl
inc eax
cmp eax, 0x12
jle 0x4702f8
mov eax, dword [esp + 0x30]
mov dword [esp + 0x2c], edi
lea ecx, [esp + 0x864]
mov esi, 0x11
mov word [eax + 0x10], bx
mov eax, dword [esp + 0x30]
mov dl, byte [ecx]
mov byte [eax], dl
inc eax
inc ecx
dec esi
jne 0x470320
lea eax, [esp + 0x2b0]
lea ecx, [esp + 0xd7a0]
mov edx, 3
mov dword [eax + 4], ecx
mov dword [eax], ebx
add ecx, 0x104
add eax, 8
dec edx
jne 0x47033c
lea eax, [esp + 0x898]
lea ecx, [esp + 0xdaac]
mov edx, 0xf
mov dword [eax + 4], ecx
mov dword [eax], ebx
add ecx, 0x104
add eax, 8
dec edx
jne 0x470360
lea eax, [esp + 0xe9e8]
lea ecx, [esp + 0xf1e0]
mov edx, 0xff
mov dword [eax + 4], ecx
mov dword [eax], ebx
add ecx, 0x104
add eax, 8
dec edx
jne 0x470384
mov ecx, dword [esp + 0x10]
lea eax, [esp + 0xce7c]
mov dword [esp + 0x38], eax
mov dword [esp + 0x3a4], 1
lea eax, [ecx - 1]
cmp eax, ebx
mov dword [esp + 0x3b8], eax
jl 0x47a894
mov dword [esp + 0x3bc], 1
mov edx, dword [esp + 0x3bc]
mov eax, dword [esp + 0x3b8]
lea ecx, [edx + eax*2]
mov edx, dword [esp + 0x14]
mov al, byte [ecx + edx]
test al, al
mov byte [esp + 0x77c], al
jne 0x470a6d
mov eax, dword [esp + 0x3a4]
test eax, eax
jne 0x47a863
mov dword [esp + 0x13c], 8
mov edx, dword [esp + 0x34]
xor eax, eax
cmp edx, eax
je 0x470594
lea edi, [edx + edx]
lea ecx, [esp + 0x41f0]
cmp edi, eax
mov dword [esp + 0x6a8], ecx
mov dword [esp + 0x24], edi
jle 0x47044b
mov edx, dword [esp + 0x6a8]
inc eax
cmp eax, edi
mov word [edx + eax*2 - 2], 0
jl 0x470434
mov edx, dword [esp + 0x34]
lea eax, [esp + 0x41f0]
xor ebx, ebx
test edx, edx
mov dword [esp + 0x264], eax
mov dword [esp + 0x260], 0
jle 0x470566
mov ecx, dword [esp + 0x38]
test edx, edx
mov bp, word [ecx + ebx*2]
je 0x470539
test bp, bp
je 0x470539
cmp bp, 1
jne 0x4704a7
lea edx, [esp + 0x260]
lea eax, [esp + 0x34]
push edx
lea ecx, [esp + 0x264]
push eax
push ecx
jmp 0x47052d
lea esi, [esp + 0xc1c]
test edx, edx
mov dword [esp + 0x698], esi
jl 0x4704d2
lea ecx, [edx + 1]
xor eax, eax
lea edi, [esp + 0xc1c]
shr ecx, 1
rep stosd dword es:[edi], eax
adc ecx, ecx
rep stosw word es:[edi], ax
mov edi, dword [esp + 0x24]
xor eax, eax
test edx, edx
jle 0x470506
mov ecx, ebp
and ecx, 0xffff
mov ebp, dword [esp + 0x38]
xor edx, edx
mov dx, word [ebp + eax*2]
mov ebp, dword [esi + eax*2]
imul edx, ecx
add ebp, edx
mov dword [esi + eax*2], ebp
mov edx, dword [esp + 0x34]
mov esi, dword [esp + 0x698]
inc eax
cmp eax, edx
jl 0x4704e0
cmp word [esi + edx*2], 0
je 0x47050e
inc edx
lea eax, [esp + 0x260]
mov dword [esp + 0x694], edx
lea ecx, [esp + 0x694]
push eax
lea edx, [esp + 0x264]
push ecx
push edx
call fcn.0047b3a0
mov edx, dword [esp + 0x40]
add esp, 0xc
mov eax, dword [esp + 0x260]
test eax, eax
jle 0x47054c
dec eax
mov dword [esp + 0x260], eax
mov esi, dword [esp + 0x264]
add esi, 2
inc ebx
cmp ebx, edx
mov dword [esp + 0x264], esi
jl 0x47046e
mov eax, dword [esp + 0x6a8]
cmp word [eax + edi*2 - 2], 0
jne 0x470576
dec edi
lea ecx, [esp + 0x34]
lea edx, [esp + 0x6a4]
push ecx
push edx
mov dword [esp + 0x6ac], edi
call fcn.0047b200
add esp, 8
jmp 0x470598
mov dword [esp + 0x34], eax
lea ecx, [esp + 0x34]
lea esi, [esp + 0x34]
lea eax, [esp + 0x8660]
mov dword [esp + 0x28], esi
test ecx, ecx
mov dword [esp + 0x364], eax
jne 0x4705cf
lea edx, [esp + 0x8764]
lea esi, [esp + 0x85c]
mov dword [esp + 0x860], edx
mov dword [esp + 0x28], esi
mov eax, dword [esp + 0x34]
xor edi, edi
cmp eax, edi
jne 0x4705e7
mov dword [esp + 0x360], edi
mov dword [esi], edi
jmp 0x470a53
cmp dword [esp + 0x10], 1
jne 0x470614
mov eax, dword [esp + 0x14]
cmp word [eax], 1
jne 0x470614
lea ecx, [esp + 0x360]
lea edx, [esp + 0x34]
push ecx
push edx
call fcn.0047b200
add esp, 8
mov dword [esi], edi
jmp 0x470a53
lea eax, [esp + 0x10]
lea ecx, [esp + 0x34]
push eax
push ecx
call fcn.0047b240
add esp, 8
test eax, eax
jge 0x470644
lea edx, [esp + 0x34]
push esi
push edx
mov dword [esp + 0x368], edi
call fcn.0047b200
add esp, 8
jmp 0x470a53
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
mov dx, word [ecx + eax*2 - 2]
xor ecx, ecx
mov ax, dx
mov dword [esp + 0x24], edx
cmp ax, di
je 0x470668
shr ax, 1
inc ecx
cmp ax, di
jne 0x47065f
mov esi, 0x10
lea eax, [esp + 0x5334]
sub esi, ecx
lea ecx, [esp + 0xd28c]
mov dword [esp + 0x20], esi
mov dword [esp + 0x728], eax
mov dword [esp + 0x1f4], ecx
jne 0x4706ba
lea edx, [esp + 0x724]
lea eax, [esp + 0x34]
push edx
push eax
call fcn.0047b200
lea ecx, [esp + 0x1f8]
lea edx, [esp + 0x18]
push ecx
push edx
call fcn.0047b200
add esp, 0x10
jmp 0x4706e3
lea eax, [esp + 0x724]
push esi
lea ecx, [esp + 0x38]
push eax
push ecx
call fcn.0047b290
lea edx, [esp + 0x1fc]
push esi
lea eax, [esp + 0x20]
push edx
push eax
call fcn.0047b290
add esp, 0x18
mov eax, dword [esp + 0x724]
mov edx, dword [esp + 0x1f0]
mov esi, dword [esp + 0x364]
sub eax, edx
mov ebx, eax
mov edi, 2
lea ecx, [eax + 1]
mov eax, edx
mov dword [esp + 0x360], ecx
mov dword [esp + 0x64], eax
lea esi, [esi + ecx*2 - 2]
mov ecx, dword [esp + 0x728]
lea edx, [ecx + ebx*2]
mov dword [esp + 0x68], edx
test eax, eax
jne 0x470733
mov word [esi], ax
mov dword [esp + 0x64], eax
jmp 0x4709af
cmp dword [esp + 0x1f0], 1
jne 0x4707cc
cmp eax, 1
jne 0x470788
mov ecx, dword [esp + 0x68]
mov edx, dword [esp + 0x1f4]
xor eax, eax
mov ax, word [ecx]
xor ecx, ecx
mov cx, word [edx]
cdq
idiv ecx
xor edx, edx
mov word [esi], ax
mov ecx, dword [esp + 0x1f4]
imul ax, word [ecx]
mov ecx, dword [esp + 0x68]
sub word [ecx], ax
mov eax, dword [esp + 0x68]
cmp word [eax], dx
setne dl
mov dword [esp + 0x64], edx
jmp 0x4709af
mov ecx, dword [esp + 0x68]
mov edx, dword [esp + 0x1f4]
xor ebp, ebp
mov ecx, dword [ecx]
mov bp, word [edx]
mov eax, ecx
xor edx, edx
div ebp
mov word [esi], ax
mov edx, dword [esp + 0x1f4]
imul ax, word [edx]
sub ecx, eax
mov eax, dword [esp + 0x68]
mov word [eax], cx
mov edx, dword [esp + 0x68]
xor ecx, ecx
cmp word [edx], cx
setne cl
mov dword [esp + 0x64], ecx
jmp 0x4709af
lea eax, [esp + 0x64]
lea ecx, [esp + 0x64]
push eax
push ecx
call fcn.0047b200
lea edx, [esp + 0x1f8]
lea eax, [esp + 0x6c]
push edx
push eax
call fcn.0047b240
add esp, 0x10
test eax, eax
jge 0x4707fe
mov word [esi], 0
jmp 0x4709af
mov eax, dword [esp + 0x64]
mov ecx, dword [esp + 0x1f0]
cmp eax, ecx
jne 0x470830
mov ebp, dword [esp + 0x1f4]
xor edx, edx
mov dx, word [ebp + ecx*2 - 2]
mov ebp, dword [esp + 0x68]
mov ecx, edx
xor edx, edx
mov dx, word [ebp + eax*2 - 2]
inc ecx
mov eax, edx
cdq
idiv ecx
jmp 0x47084d
mov edx, dword [esp + 0x68]
mov ebp, dword [esp + 0x1f4]
mov eax, dword [edx + eax*2 - 4]
xor edx, edx
mov dx, word [ebp + ecx*2 - 2]
mov ecx, edx
xor edx, edx
inc ecx
div ecx
lea edx, [esp + 0x5230]
mov word [esi], ax
mov dword [esp + 0x484], edx
mov edx, dword [esp + 0x1f0]
mov dword [esp + 0x480], 0
mov ax, word [esi]
test edx, edx
mov dword [esp + 0x24], eax
je 0x47094c
test ax, ax
je 0x47094c
cmp ax, 1
jne 0x4708b3
lea eax, [esp + 0x480]
lea ecx, [esp + 0x1f0]
push eax
lea edx, [esp + 0x484]
push ecx
push edx
call fcn.0047b3a0
add esp, 0xc
jmp 0x47094c
lea ebp, [esp + 0xb18]
test edx, edx
mov dword [esp + 0x4a4], ebp
jl 0x4708da
lea ecx, [edx + 1]
xor eax, eax
lea edi, [esp + 0xb18]
shr ecx, 1
rep stosd dword es:[edi], eax
adc ecx, ecx
rep stosw word es:[edi], ax
xor eax, eax
test edx, edx
jle 0x470917
mov ecx, dword [esp + 0x24]
and ecx, 0xffff
mov edi, dword [esp + 0x1f4]
xor edx, edx
mov dx, word [edi + eax*2]
mov edi, dword [ebp + eax*2]
imul edx, ecx
add edi, edx
mov dword [ebp + eax*2], edi
mov edx, dword [esp + 0x1f0]
mov ebp, dword [esp + 0x4a4]
inc eax
cmp eax, edx
jl 0x4708ea
cmp word [ebp + edx*2], 0
je 0x470920
inc edx
lea eax, [esp + 0x480]
mov dword [esp + 0x4a0], edx
lea ecx, [esp + 0x4a0]
push eax
lea edx, [esp + 0x484]
push ecx
push edx
call fcn.0047b3a0
add esp, 0xc
mov edi, 2
lea eax, [esp + 0x64]
lea ecx, [esp + 0x480]
push eax
lea edx, [esp + 0x68]
push ecx
push edx
call fcn.0047b4a0
lea eax, [esp + 0x1fc]
lea ecx, [esp + 0x70]
push eax
push ecx
call fcn.0047b240
add esp, 0x14
test eax, eax
jl 0x4709af
lea edx, [esp + 0x64]
lea eax, [esp + 0x1f0]
push edx
lea ecx, [esp + 0x68]
push eax
push ecx
call fcn.0047b4a0
inc word [esi]
lea edx, [esp + 0x1fc]
lea eax, [esp + 0x70]
push edx
push eax
call fcn.0047b240
add esp, 0x14
test eax, eax
jge 0x47097c
test ebx, ebx
je 0x470a02
mov eax, dword [esp + 0x64]
mov ebp, dword [esp + 0x68]
sub esi, edi
inc eax
sub ebp, edi
dec ebx
test ebx, ebx
mov dword [esp + 0x64], eax
mov dword [esp + 0x68], ebp
jle 0x470723
cmp eax, dword [esp + 0x1f0]
jge 0x470723
mov word [esi], 0
mov eax, dword [esp + 0x64]
mov ebp, dword [esp + 0x68]
sub esi, edi
inc eax
sub ebp, edi
dec ebx
mov dword [esp + 0x64], eax
test ebx, ebx
mov dword [esp + 0x68], ebp
jg 0x4709d1
jmp 0x470723
mov eax, dword [esp + 0x360]
test eax, eax
jle 0x470a24
mov ecx, dword [esp + 0x364]
cmp word [ecx + eax*2 - 2], 0
jne 0x470a24
dec eax
mov dword [esp + 0x360], eax
mov eax, dword [esp + 0x20]
test eax, eax
jne 0x470a40
mov edx, dword [esp + 0x28]
lea eax, [esp + 0x64]
push edx
push eax
call fcn.0047b200
add esp, 8
jmp 0x470a53
mov ecx, dword [esp + 0x28]
push eax
lea edx, [esp + 0x68]
push ecx
push edx
call fcn.0047b310
add esp, 0xc
mov eax, dword [esp + 0x13c]
dec eax
mov dword [esp + 0x13c], eax
jne 0x47040d
jmp 0x47a863
mov ecx, dword [esp + 0x77c]
and ecx, 0xff
mov esi, dword [esp + ecx*8 + 0xe9e0]
lea ecx, [esp + ecx*8 + 0xe9e0]
test esi, esi
mov dword [esp + 0x13c], ecx
jne 0x479ab9
lea ecx, [esp + 0xb61c]
mov dword [esp + 0x48], ecx
mov cl, al
shr cl, 4
and al, 0xf
mov byte [esp + 0x3ac], cl
test cl, cl
mov byte [esp + 0x5b0], al
je 0x475277
mov eax, dword [esp + 0x3ac]
and eax, 0xff
mov ecx, dword [esp + eax*8 + 0x890]
lea eax, [esp + eax*8 + 0x890]
test ecx, ecx
mov dword [esp + 0x24], eax
jne 0x474bad
lea ecx, [esp + 0x543c]
mov dword [esp + 0x40], ecx
mov cl, byte [esp + 0x3ac]
mov al, cl
and cl, 3
shr al, 2
test al, al
mov byte [esp + 0x3c4], al
mov byte [esp + 0x3b4], cl
je 0x472b2e
mov eax, dword [esp + 0x3c4]
and eax, 0xff
mov ecx, dword [esp + eax*8 + 0x2a8]
lea eax, [esp + eax*8 + 0x2a8]
test ecx, ecx
mov dword [esp + 0x18], eax
jne 0x472460
mov al, byte [esp + 0x3c4]
cmp al, 1
jne 0x471009
lea eax, [esp + 0x2b0]
lea esi, [esp + 0x2b0]
lea ecx, [esp + 0x896c]
mov dword [esp + 0x28], esi
test eax, eax
mov dword [esp + 0x2f4], ecx
jne 0x470b87
lea ecx, [esp + 0x8a70]
lea esi, [esp + 0x824]
mov dword [esp + 0x828], ecx
mov dword [esp + 0x28], esi
mov eax, dword [esp + 0x2c]
xor edi, edi
cmp eax, edi
jne 0x470b9f
mov dword [esp + 0x2f0], edi
mov dword [esi], edi
jmp 0x472460
cmp dword [esp + 0x10], 1
jne 0x470bc8
cmp word [edx], 1
jne 0x470bc8
lea edx, [esp + 0x2f0]
lea eax, [esp + 0x2c]
push edx
push eax
call fcn.0047b200
add esp, 8
mov dword [esi], edi
jmp 0x472460
lea ecx, [esp + 0x10]
lea edx, [esp + 0x2c]
push ecx
push edx
call fcn.0047b240
add esp, 8
test eax, eax
jge 0x470bf8
lea eax, [esp + 0x2c]
push esi
push eax
mov dword [esp + 0x2f8], edi
call fcn.0047b200
add esp, 8
jmp 0x472460
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
mov ax, word [edx + ecx*2 - 2]
xor ecx, ecx
cmp ax, di
mov dword [esp + 0x20], eax
je 0x470c19
shr ax, 1
inc ecx
cmp ax, di
jne 0x470c10
mov esi, 0x10
lea edx, [esp + 0x8e80]
sub esi, ecx
lea ecx, [esp + 0x5540]
mov dword [esp + 0x1c], esi
mov dword [esp + 0x718], ecx
mov dword [esp + 0x144], edx
jne 0x470c6b
lea eax, [esp + 0x714]
lea ecx, [esp + 0x2c]
push eax
push ecx
call fcn.0047b200
lea edx, [esp + 0x148]
lea eax, [esp + 0x18]
push edx
push eax
call fcn.0047b200
add esp, 0x10
jmp 0x470c94
lea ecx, [esp + 0x714]
push esi
lea edx, [esp + 0x30]
push ecx
push edx
call fcn.0047b290
lea eax, [esp + 0x14c]
push esi
lea ecx, [esp + 0x20]
push eax
push ecx
call fcn.0047b290
add esp, 0x18
mov eax, dword [esp + 0x714]
mov edx, dword [esp + 0x140]
mov esi, dword [esp + 0x2f4]
sub eax, edx
mov ebx, eax
mov edi, 2
lea ecx, [eax + 1]
mov eax, edx
mov edx, dword [esp + 0x718]
mov dword [esp + 0x2f0], ecx
lea esi, [esi + ecx*2 - 2]
mov dword [esp + 0x74], eax
lea ecx, [edx + ebx*2]
mov dword [esp + 0x78], ecx
test eax, eax
jne 0x470ce4
mov word [esi], ax
mov dword [esp + 0x74], eax
jmp 0x470f66
cmp dword [esp + 0x140], 1
jne 0x470d7d
cmp eax, 1
jne 0x470d39
mov edx, dword [esp + 0x78]
xor eax, eax
xor ecx, ecx
mov ax, word [edx]
mov edx, dword [esp + 0x144]
mov cx, word [edx]
cdq
idiv ecx
xor edx, edx
mov word [esi], ax
mov ecx, dword [esp + 0x144]
imul ax, word [ecx]
mov ecx, dword [esp + 0x78]
sub word [ecx], ax
mov eax, dword [esp + 0x78]
cmp word [eax], dx
setne dl
mov dword [esp + 0x74], edx
jmp 0x470f66
mov ecx, dword [esp + 0x78]
mov edx, dword [esp + 0x144]
xor ebp, ebp
mov ecx, dword [ecx]
mov bp, word [edx]
mov eax, ecx
xor edx, edx
div ebp
mov word [esi], ax
mov edx, dword [esp + 0x144]
imul ax, word [edx]
sub ecx, eax
mov eax, dword [esp + 0x78]
mov word [eax], cx
mov edx, dword [esp + 0x78]
xor ecx, ecx
cmp word [edx], cx
setne cl
mov dword [esp + 0x74], ecx
jmp 0x470f66
lea eax, [esp + 0x74]
lea ecx, [esp + 0x74]
push eax
push ecx
call fcn.0047b200
lea edx, [esp + 0x148]
lea eax, [esp + 0x7c]
push edx
push eax
call fcn.0047b240
add esp, 0x10
test eax, eax
jge 0x470daf
mov word [esi], 0
jmp 0x470f66
mov eax, dword [esp + 0x74]
mov ecx, dword [esp + 0x140]
cmp eax, ecx
jne 0x470de1
mov ebp, dword [esp + 0x144]
xor edx, edx
mov dx, word [ebp + ecx*2 - 2]
mov ebp, dword [esp + 0x78]
mov ecx, edx
xor edx, edx
mov dx, word [ebp + eax*2 - 2]
inc ecx
mov eax, edx
cdq
idiv ecx
jmp 0x470dfe
mov edx, dword [esp + 0x78]
mov ebp, dword [esp + 0x144]
mov eax, dword [edx + eax*2 - 4]
xor edx, edx
mov dx, word [ebp + ecx*2 - 2]
mov ecx, edx
xor edx, edx
inc ecx
div ecx
lea edx, [esp + 0x5648]
mov word [esi], ax
mov dword [esp + 0x47c], edx
mov edx, dword [esp + 0x140]
mov dword [esp + 0x478], 0
mov ax, word [esi]
test edx, edx
mov dword [esp + 0x20], eax
je 0x470efd
test ax, ax
je 0x470efd
cmp ax, 1
jne 0x470e64
lea eax, [esp + 0x478]
lea ecx, [esp + 0x140]
push eax
lea edx, [esp + 0x47c]
push ecx
push edx
call fcn.0047b3a0
add esp, 0xc
jmp 0x470efd
lea ebp, [esp + 0x2c9c]
test edx, edx
mov dword [esp + 0x6a0], ebp
jl 0x470e8b
lea ecx, [edx + 1]
xor eax, eax
lea edi, [esp + 0x2c9c]
shr ecx, 1
rep stosd dword es:[edi], eax
adc ecx, ecx
rep stosw word es:[edi], ax
xor eax, eax
test edx, edx
jle 0x470ec8
mov ecx, dword [esp + 0x20]
and ecx, 0xffff
mov edi, dword [esp + 0x144]
xor edx, edx
mov dx, word [edi + eax*2]
mov edi, dword [ebp + eax*2]
imul edx, ecx
add edi, edx
mov dword [ebp + eax*2], edi
mov edx, dword [esp + 0x140]
mov ebp, dword [esp + 0x6a0]
inc eax
cmp eax, edx
jl 0x470e9b
cmp word [ebp + edx*2], 0
je 0x470ed1
inc edx
lea eax, [esp + 0x478]
mov dword [esp + 0x69c], edx
lea ecx, [esp + 0x69c]
push eax
lea edx, [esp + 0x47c]
push ecx
push edx
call fcn.0047b3a0
add esp, 0xc
mov edi, 2
lea eax, [esp + 0x74]
lea ecx, [esp + 0x478]
push eax
lea edx, [esp + 0x78]
push ecx
push edx
call fcn.0047b4a0
lea eax, [esp + 0x14c]
lea ecx, [esp + 0x80]
push eax
push ecx
call fcn.0047b240
add esp, 0x14
test eax, eax
jl 0x470f66
lea edx, [esp + 0x74]
lea eax, [esp + 0x140]
push edx
lea ecx, [esp + 0x78]
push eax
push ecx
call fcn.0047b4a0
inc word [esi]
lea edx, [esp + 0x14c]
lea eax, [esp + 0x80]
push edx
push eax
call fcn.0047b240
add esp, 0x14
test eax, eax
jge 0x470f30
test ebx, ebx
je 0x470fb9
mov eax, dword [esp + 0x74]
mov ebp, dword [esp + 0x78]
sub esi, edi
inc eax
sub ebp, edi
dec ebx
test ebx, ebx
mov dword [esp + 0x74], eax
mov dword [esp + 0x78], ebp
jle 0x470cd4
cmp eax, dword [esp + 0x140]
jge 0x470cd4
mov word [esi], 0
mov eax, dword [esp + 0x74]
mov ebp, dword [esp + 0x78]
sub esi, edi
inc eax
sub ebp, edi
dec ebx
mov dword [esp + 0x74], eax
test ebx, ebx
mov dword [esp + 0x78], ebp
jg 0x470f88
jmp 0x470cd4
mov eax, dword [esp + 0x2f0]
test eax, eax
jle 0x470fdb
mov ecx, dword [esp + 0x2f4]
cmp word [ecx + eax*2 - 2], 0
jne 0x470fdb
dec eax
mov dword [esp + 0x2f0], eax
mov eax, dword [esp + 0x1c]
test eax, eax
jne 0x470ffa
mov edx, dword [esp + 0x28]
lea eax, [esp + 0x74]
push edx
push eax
call fcn.0047b200
add esp, 8
jmp 0x472460
mov ecx, dword [esp + 0x28]
push eax
push ecx
lea edx, [esp + 0x7c]
jmp 0x472457
lea ecx, [esp + 0xcb70]
cmp al, 2
mov dword [esp + 0x128], ecx
jne 0x4716bd
mov edx, dword [esp + 0x2c]
xor eax, eax
cmp edx, eax
je 0x4711a8
lea ecx, [esp + 0xe24]
mov dword [esp + 0x494], ecx
lea ecx, [edx + edx]
cmp ecx, eax
mov dword [esp + 0x20], ecx
jle 0x47105d
mov edx, dword [esp + 0x494]
inc eax
cmp eax, ecx
mov word [edx + eax*2 - 2], 0
jl 0x471046
mov edx, dword [esp + 0x2c]
lea eax, [esp + 0xe24]
xor ebx, ebx
test edx, edx
mov dword [esp + 0x224], eax
mov dword [esp + 0x220], 0
jle 0x471173
mov ecx, dword [esp + 0x30]
test edx, edx
mov bp, word [ecx + ebx*2]
je 0x471146
test bp, bp
je 0x471146
cmp bp, 1
jne 0x4710b9
lea edx, [esp + 0x220]
lea eax, [esp + 0x2c]
push edx
lea ecx, [esp + 0x224]
push eax
push ecx
jmp 0x47113a
lea esi, [esp + 0x3cdc]
test edx, edx
mov dword [esp + 0x4b4], esi
jl 0x4710e0
lea ecx, [edx + 1]
xor eax, eax
lea edi, [esp + 0x3cdc]
shr ecx, 1
rep stosd dword es:[edi], eax
adc ecx, ecx
rep stosw word es:[edi], ax
xor eax, eax
test edx, edx
jle 0x471113
mov ecx, ebp
and ecx, 0xffff
mov edi, dword [esp + 0x30]
xor edx, edx
mov ebp, dword [esi + eax*2]
mov dx, word [edi + eax*2]
imul edx, ecx
add ebp, edx
mov dword [esi + eax*2], ebp
mov edx, dword [esp + 0x2c]
mov esi, dword [esp + 0x4b4]
inc eax
cmp eax, edx
jl 0x4710ee
cmp word [esi + edx*2], 0
je 0x47111b
inc edx
lea eax, [esp + 0x220]
mov dword [esp + 0x4b0], edx
lea ecx, [esp + 0x4b0]
push eax
lea edx, [esp + 0x224]
push ecx
push edx
call fcn.0047b3a0
mov edx, dword [esp + 0x38]
add esp, 0xc
mov eax, dword [esp + 0x220]
test eax, eax
jle 0x471159
dec eax
mov dword [esp + 0x220], eax
mov esi, dword [esp + 0x224]
add esi, 2
inc ebx
cmp ebx, edx
mov dword [esp + 0x224], esi
jl 0x471080
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x494]
cmp word [ecx + eax*2 - 2], 0
jne 0x471187
dec eax
mov dword [esp + 0x490], eax
lea edx, [esp + 0x124]
lea eax, [esp + 0x490]
push edx
push eax
call fcn.0047b200
add esp, 8
jmp 0x4711af
mov dword [esp + 0x124], eax
lea edx, [esp + 0x2b8]
lea esi, [esp + 0x2b8]
lea ecx, [esp + 0x8c78]
mov dword [esp + 0x28], esi
test edx, edx
mov dword [esp + 0x344], ecx
jne 0x4711ec
lea eax, [esp + 0x8d7c]
lea esi, [esp + 0x79c]
mov dword [esp + 0x7a0], eax
mov dword [esp + 0x28], esi
mov eax, dword [esp + 0x124]
xor edi, edi
cmp eax, edi
jne 0x471207
mov dword [esp + 0x340], edi
mov dword [esi], edi
jmp 0x472460
cmp dword [esp + 0x10], 1
jne 0x471237
mov ecx, dword [esp + 0x14]
cmp word [ecx], 1
jne 0x471237
lea edx, [esp + 0x340]
lea eax, [esp + 0x124]
push edx
push eax
call fcn.0047b200
add esp, 8
mov dword [esi], edi
jmp 0x472460
lea ecx, [esp + 0x10]
lea edx, [esp + 0x124]
push ecx
push edx
call fcn.0047b240
add esp, 8
test eax, eax
jge 0x47126d
mov dword [esp + 0x340], edi
lea eax, [esp + 0x124]
push esi
push eax
call fcn.0047b200
add esp, 8
jmp 0x472460
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
mov ax, word [edx + ecx*2 - 2]
xor ecx, ecx
cmp ax, di
mov dword [esp + 0x20], eax
je 0x47128e
shr ax, 1
inc ecx
cmp ax, di
jne 0x471285
mov esi, 0x10
lea edx, [esp + 0x5854]
sub esi, ecx
lea ecx, [esp + 0x574c]
mov dword [esp + 0x1c], esi
mov dword [esp + 0x6c8], ecx
mov dword [esp + 0x15c], edx
jne 0x4712e3
lea eax, [esp + 0x6c4]
lea ecx, [esp + 0x124]
push eax
push ecx
call fcn.0047b200
lea edx, [esp + 0x160]
lea eax, [esp + 0x18]
push edx
push eax
call fcn.0047b200
add esp, 0x10
jmp 0x47130f
lea ecx, [esp + 0x6c4]
push esi
lea edx, [esp + 0x128]
push ecx
push edx
call fcn.0047b290
lea eax, [esp + 0x164]
push esi
lea ecx, [esp + 0x20]
push eax
push ecx
call fcn.0047b290
add esp, 0x18
mov eax, dword [esp + 0x6c4]
mov edx, dword [esp + 0x158]
mov esi, dword [esp + 0x344]
sub eax, edx
mov ebx, eax
mov edi, 2
lea ecx, [eax + 1]
mov eax, edx
mov edx, dword [esp + 0x6c8]
mov dword [esp + 0x340], ecx
lea esi, [esi + ecx*2 - 2]
mov dword [esp + 0x7c], eax
lea ecx, [edx + ebx*2]
mov dword [esp + 0x80], ecx
test eax, eax
jne 0x471362
mov word [esi], ax
mov dword [esp + 0x7c], eax
jmp 0x47160b
cmp dword [esp + 0x158], 1
jne 0x471413
cmp eax, 1
jne 0x4713c3
mov edx, dword [esp + 0x80]
xor eax, eax
xor ecx, ecx
mov ax, word [edx]
mov edx, dword [esp + 0x15c]
mov cx, word [edx]
cdq
idiv ecx
mov word [esi], ax
mov ecx, dword [esp + 0x15c]
mov dx, word [ecx]
imul dx, ax
mov eax, dword [esp + 0x80]
sub word [eax], dx
mov ecx, dword [esp + 0x80]
xor eax, eax
cmp word [ecx], ax
setne al
mov dword [esp + 0x7c], eax
jmp 0x47160b
mov edx, dword [esp + 0x80]
mov eax, dword [esp + 0x15c]
xor ebp, ebp
mov ecx, dword [edx]
mov bp, word [eax]
mov eax, ecx
xor edx, edx
div ebp
mov word [esi], ax
mov edx, dword [esp + 0x15c]
mov dx, word [edx]
imul dx, ax
mov eax, dword [esp + 0x80]
sub ecx, edx
mov word [eax], cx
mov edx, dword [esp + 0x80]
xor ecx, ecx
cmp word [edx], cx
setne cl
mov dword [esp + 0x7c], ecx
jmp 0x47160b
lea eax, [esp + 0x7c]
lea ecx, [esp + 0x7c]
push eax
push ecx
call fcn.0047b200
lea edx, [esp + 0x160]
lea eax, [esp + 0x84]
push edx
push eax
call fcn.0047b240
add esp, 0x10
test eax, eax
jge 0x471448
mov word [esi], 0
jmp 0x47160b
mov eax, dword [esp + 0x7c]
mov ecx, dword [esp + 0x158]
cmp eax, ecx
jne 0x47147d
mov ebp, dword [esp + 0x15c]
xor edx, edx
mov dx, word [ebp + ecx*2 - 2]
mov ebp, dword [esp + 0x80]
mov ecx, edx
xor edx, edx
mov dx, word [ebp + eax*2 - 2]
inc ecx
mov eax, edx
cdq
idiv ecx
jmp 0x47149d
mov edx, dword [esp + 0x80]
mov ebp, dword [esp + 0x15c]
mov eax, dword [edx + eax*2 - 4]
xor edx, edx
mov dx, word [ebp + ecx*2 - 2]
mov ecx, edx
xor edx, edx
inc ecx
div ecx
lea edx, [esp + 0x918c]
mov word [esi], ax
mov dword [esp + 0x48c], edx
mov edx, dword [esp + 0x158]
mov dword [esp + 0x488], 0
mov ax, word [esi]
test edx, edx
mov dword [esp + 0x20], eax
je 0x47159c
test ax, ax
je 0x47159c
cmp ax, 1
jne 0x471503
lea eax, [esp + 0x488]
lea ecx, [esp + 0x158]
push eax
lea edx, [esp + 0x48c]
push ecx
push edx
call fcn.0047b3a0
add esp, 0xc
jmp 0x47159c
lea ebp, [esp + 0x102c]
test edx, edx
mov dword [esp + 0x4c4], ebp
jl 0x47152a
lea ecx, [edx + 1]
xor eax, eax
lea edi, [esp + 0x102c]
shr ecx, 1
rep stosd dword es:[edi], eax
adc ecx, ecx
rep stosw word es:[edi], ax
xor eax, eax
test edx, edx
jle 0x471567
mov ecx, dword [esp + 0x20]
and ecx, 0xffff
mov edi, dword [esp + 0x15c]
xor edx, edx
mov dx, word [edi + eax*2]
mov edi, dword [ebp + eax*2]
imul edx, ecx
add edi, edx
mov dword [ebp + eax*2], edi
mov edx, dword [esp + 0x158]
mov ebp, dword [esp + 0x4c4]
inc eax
cmp eax, edx
jl 0x47153a
cmp word [ebp + edx*2], 0
je 0x471570
inc edx
lea eax, [esp + 0x488]
mov dword [esp + 0x4c0], edx
lea ecx, [esp + 0x4c0]
push eax
lea edx, [esp + 0x48c]
push ecx
push edx
call fcn.0047b3a0
add esp, 0xc
mov edi, 2
lea eax, [esp + 0x7c]
lea ecx, [esp + 0x488]
push eax
lea edx, [esp + 0x80]
push ecx
push edx
call fcn.0047b4a0
lea eax, [esp + 0x164]
lea ecx, [esp + 0x88]
push eax
push ecx
call fcn.0047b240
add esp, 0x14
test eax, eax
jl 0x47160b
lea edx, [esp + 0x7c]
lea eax, [esp + 0x158]
push edx
lea ecx, [esp + 0x80]
push eax
push ecx
call fcn.0047b4a0
inc word [esi]
lea edx, [esp + 0x164]
lea eax, [esp + 0x88]
push edx
push eax
call fcn.0047b240
add esp, 0x14
test eax, eax
jge 0x4715d2
test ebx, ebx
je 0x47166a
mov eax, dword [esp + 0x7c]
mov ebp, dword [esp + 0x80]
sub esi, edi
inc eax
sub ebp, edi
dec ebx
test ebx, ebx
mov dword [esp + 0x7c], eax
mov dword [esp + 0x80], ebp
jle 0x471352
cmp eax, dword [esp + 0x158]
jge 0x471352
mov word [esi], 0
mov eax, dword [esp + 0x7c]
mov ebp, dword [esp + 0x80]
sub esi, edi
inc eax
sub ebp, edi
dec ebx
mov dword [esp + 0x7c], eax
test ebx, ebx
mov dword [esp + 0x80], ebp
jg 0x471633
jmp 0x471352
mov eax, dword [esp + 0x340]
test eax, eax
jle 0x47168c
mov ecx, dword [esp + 0x344]
cmp word [ecx + eax*2 - 2], 0
jne 0x47168c
dec eax
mov dword [esp + 0x340], eax
mov eax, dword [esp + 0x1c]
test eax, eax
jne 0x4716ab
mov edx, dword [esp + 0x28]
lea eax, [esp + 0x7c]
push edx
push eax
call fcn.0047b200
add esp, 8
jmp 0x472460
mov ecx, dword [esp + 0x28]
push eax
push ecx
lea edx, [esp + 0x84]
jmp 0x472457
cmp al, 3
jne 0x472460
mov edx, dword [esp + 0x2c]
xor eax, eax
cmp edx, eax
je 0x47184e
lea ecx, [esp + 0x2ea4]
mov dword [esp + 0x4d4], ecx
lea ecx, [edx + edx]
cmp ecx, eax
mov dword [esp + 0x20], ecx
jle 0x471703
mov edx, dword [esp + 0x4d4]
inc eax
cmp eax, ecx
mov word [edx + eax*2 - 2], 0
jl 0x4716ec
mov edx, dword [esp + 0x2c]
lea eax, [esp + 0x2ea4]
xor ebx, ebx
test edx, edx
mov dword [esp + 0x2a4], eax
mov dword [esp + 0x2a0], 0
jle 0x471819
mov ecx, dword [esp + 0x30]
test edx, edx
mov bp, word [ecx + ebx*2]
je 0x4717ec
test bp, bp
je 0x4717ec
cmp bp, 1
jne 0x47175f
lea edx, [esp + 0x2a0]
lea eax, [esp + 0x2c]
push edx
lea ecx, [esp + 0x2a4]
push eax
push ecx
jmp 0x4717e0
lea esi, [esp + 0x1234]
test edx, edx
mov dword [esp + 0x630], esi
jl 0x471786
lea ecx, [edx + 1]
xor eax, eax
lea edi, [esp + 0x1234]
shr ecx, 1
rep stosd dword es:[edi], eax
adc ecx, ecx
rep stosw word es:[edi], ax
xor eax, eax
test edx, edx
jle 0x4717b9
mov ecx, ebp
and ecx, 0xffff
mov edi, dword [esp + 0x30]
xor edx, edx
mov ebp, dword [esi + eax*2]
mov dx, word [edi + eax*2]
imul edx, ecx
add ebp, edx
mov dword [esi + eax*2], ebp
mov edx, dword [esp + 0x2c]
mov esi, dword [esp + 0x630]
inc eax
cmp eax, edx
jl 0x471794
cmp word [esi + edx*2], 0
je 0x4717c1
inc edx
lea eax, [esp + 0x2a0]
mov dword [esp + 0x62c], edx
lea ecx, [esp + 0x62c]
push eax
lea edx, [esp + 0x2a4]
push ecx
push edx
call fcn.0047b3a0
mov edx, dword [esp + 0x38]
add esp, 0xc
mov eax, dword [esp + 0x2a0]
test eax, eax
jle 0x4717ff
dec eax
mov dword [esp + 0x2a0], eax
mov esi, dword [esp + 0x2a4]
add esi, 2
inc ebx
cmp ebx, edx
mov dword [esp + 0x2a4], esi
jl 0x471726
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x4d4]
cmp word [ecx + eax*2 - 2], 0
jne 0x47182d
dec eax
mov dword [esp + 0x4d0], eax
lea edx, [esp + 0x124]
lea eax, [esp + 0x4d0]
push edx
push eax
call fcn.0047b200
add esp, 8
jmp 0x471855
mov dword [esp + 0x124], eax
lea edx, [esp + 0x124]
lea esi, [esp + 0x124]
lea ecx, [esp + 0x8f84]
mov dword [esp + 0x28], esi
test edx, edx
mov dword [esp + 0x304], ecx
jne 0x471892
lea eax, [esp + 0x9088]
lea esi, [esp + 0x854]
mov dword [esp + 0x858], eax
mov dword [esp + 0x28], esi
mov eax, dword [esp + 0x124]
xor edi, edi
cmp eax, edi
jne 0x4718ad
mov dword [esp + 0x300], edi
mov dword [esi], edi
jmp 0x471d8e
cmp dword [esp + 0x10], 1
jne 0x4718dd
mov ecx, dword [esp + 0x14]
cmp word [ecx], 1
jne 0x4718dd
lea edx, [esp + 0x300]
lea eax, [esp + 0x124]
push edx
push eax
call fcn.0047b200
add esp, 8
mov dword [esi], edi
jmp 0x471d8e
lea ecx, [esp + 0x10]
lea edx, [esp + 0x124]
push ecx
push edx
call fcn.0047b240
add esp, 8
test eax, eax
jge 0x471913
lea eax, [esp + 0x124]
push esi
push eax
mov dword [esp + 0x308], edi
call fcn.0047b200
add esp, 8
jmp 0x471d8e
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
mov ax, word [edx + ecx*2 - 2]
xor ecx, ecx
cmp ax, di
mov dword [esp + 0x20], eax
je 0x471934
shr ax, 1
inc ecx
cmp ax, di
jne 0x47192b
mov esi, 0x10
lea edx, [esp + 0x5a60]
sub esi, ecx
lea ecx, [esp + 0x5958]
mov dword [esp + 0x1c], esi
mov dword [esp + 0x768], ecx
mov dword [esp + 0x204], edx
jne 0x471989
lea eax, [esp + 0x764]
lea ecx, [esp + 0x124]
push eax
push ecx
call fcn.0047b200
lea edx, [esp + 0x208]
lea eax, [esp + 0x18]
push edx
push eax
call fcn.0047b200
add esp, 0x10
jmp 0x4719b5
lea ecx, [esp + 0x764]
push esi
lea edx, [esp + 0x128]
push ecx
push edx
call fcn.0047b290
lea eax, [esp + 0x20c]
push esi
lea ecx, [esp + 0x20]
push eax
push ecx
call fcn.0047b290
add esp, 0x18
mov eax, dword [esp + 0x764]
mov edx, dword [esp + 0x200]
mov esi, dword [esp + 0x304]
sub eax, edx
mov ebx, eax
mov edi, 2
lea ecx, [eax + 1]
mov eax, edx
mov edx, dword [esp + 0x768]
mov dword [esp + 0x300], ecx
lea esi, [esi + ecx*2 - 2]
mov dword [esp + 0xcc], eax
lea ecx, [edx + ebx*2]
mov dword [esp + 0xd0], ecx
test eax, eax
jne 0x471a0e
mov word [esi], ax
mov dword [esp + 0xcc], eax
jmp 0x471ccc
cmp dword [esp + 0x200], 1
jne 0x471ac5
cmp eax, 1
jne 0x471a72
mov edx, dword [esp + 0xd0]
xor eax, eax
xor ecx, ecx
mov ax, word [edx]
mov edx, dword [esp + 0x204]
mov cx, word [edx]
cdq
idiv ecx
mov word [esi], ax
mov ecx, dword [esp + 0x204]
mov dx, word [ecx]
imul dx, ax
mov eax, dword [esp + 0xd0]
sub word [eax], dx
mov ecx, dword [esp + 0xd0]
xor eax, eax
cmp word [ecx], ax
setne al
mov dword [esp + 0xcc], eax
jmp 0x471ccc
mov edx, dword [esp + 0xd0]
mov eax, dword [esp + 0x204]
xor ebp, ebp
mov ecx, dword [edx]
mov bp, word [eax]
mov eax, ecx
xor edx, edx
div ebp
mov word [esi], ax
mov edx, dword [esp + 0x204]
mov dx, word [edx]
imul dx, ax
mov eax, dword [esp + 0xd0]
sub ecx, edx
mov word [eax], cx
mov edx, dword [esp + 0xd0]
xor ecx, ecx
cmp word [edx], cx
setne cl
mov dword [esp + 0xcc], ecx
jmp 0x471ccc
lea eax, [esp + 0xcc]
lea ecx, [esp + 0xcc]
push eax
push ecx
call fcn.0047b200
lea edx, [esp + 0x208]
lea eax, [esp + 0xd4]
push edx
push eax
call fcn.0047b240
add esp, 0x10
test eax, eax
jge 0x471b00
mov word [esi], 0
jmp 0x471ccc
mov eax, dword [esp + 0xcc]
mov ecx, dword [esp + 0x200]
cmp eax, ecx
jne 0x471b38
mov ebp, dword [esp + 0x204]
xor edx, edx
mov dx, word [ebp + ecx*2 - 2]
mov ebp, dword [esp + 0xd0]
mov ecx, edx
xor edx, edx
mov dx, word [ebp + eax*2 - 2]
inc ecx
mov eax, edx
cdq
idiv ecx
jmp 0x471b58
mov edx, dword [esp + 0xd0]
mov ebp, dword [esp + 0x204]
mov eax, dword [edx + eax*2 - 4]
xor edx, edx
mov dx, word [ebp + ecx*2 - 2]
mov ecx, edx
xor edx, edx
inc ecx
div ecx
lea edx, [esp + 0xb928]
mov word [esi], ax
mov dword [esp + 0x434], edx
mov edx, dword [esp + 0x200]
mov dword [esp + 0x430], 0
mov ax, word [esi]
test edx, edx
mov dword [esp + 0x20], eax
je 0x471c57
test ax, ax
je 0x471c57
cmp ax, 1
jne 0x471bbe
lea eax, [esp + 0x430]
lea ecx, [esp + 0x200]
push eax
lea edx, [esp + 0x434]
push ecx
push edx
call fcn.0047b3a0
add esp, 0xc
jmp 0x471c57
lea ebp, [esp + 0x44fc]
test edx, edx
mov dword [esp + 0x5c0], ebp
jl 0x471be5
lea ecx, [edx + 1]
xor eax, eax
lea edi, [esp + 0x44fc]
shr ecx, 1
rep stosd dword es:[edi], eax
adc ecx, ecx
rep stosw word es:[edi], ax
xor eax, eax
test edx, edx
jle 0x471c22
mov ecx, dword [esp + 0x20]
and ecx, 0xffff
mov edi, dword [esp + 0x204]
xor edx, edx
mov dx, word [edi + eax*2]
mov edi, dword [ebp + eax*2]
imul edx, ecx
add edi, edx
mov dword [ebp + eax*2], edi
mov edx, dword [esp + 0x200]
mov ebp, dword [esp + 0x5c0]
inc eax
cmp eax, edx
jl 0x471bf5
cmp word [ebp + edx*2], 0
je 0x471c2b
inc edx
lea eax, [esp + 0x430]
mov dword [esp + 0x5bc], edx
lea ecx, [esp + 0x5bc]
push eax
lea edx, [esp + 0x434]
push ecx
push edx
call fcn.0047b3a0
add esp, 0xc
mov edi, 2
lea eax, [esp + 0xcc]
lea ecx, [esp + 0x430]
push eax
lea edx, [esp + 0xd0]
push ecx
push edx
call fcn.0047b4a0
lea eax, [esp + 0x20c]
lea ecx, [esp + 0xd8]
push eax
push ecx
call fcn.0047b240
add esp, 0x14
test eax, eax
jl 0x471ccc
lea edx, [esp + 0xcc]
lea eax, [esp + 0x200]
push edx
lea ecx, [esp + 0xd0]
push eax
push ecx
call fcn.0047b4a0
inc word [esi]
lea edx, [esp + 0x20c]
lea eax, [esp + 0xd8]
push edx
push eax
call fcn.0047b240
add esp, 0x14
test eax, eax
jge 0x471c90
test ebx, ebx
je 0x471d37
mov eax, dword [esp + 0xcc]
mov ebp, dword [esp + 0xd0]
sub esi, edi
inc eax
sub ebp, edi
dec ebx
test ebx, ebx
mov dword [esp + 0xcc], eax
mov dword [esp + 0xd0], ebp
jle 0x4719fb
cmp eax, dword [esp + 0x200]
jge 0x4719fb
mov word [esi], 0
mov eax, dword [esp + 0xcc]
mov ebp, dword [esp + 0xd0]
sub esi, edi
inc eax
sub ebp, edi
dec ebx
mov dword [esp + 0xcc], eax
test ebx, ebx
mov dword [esp + 0xd0], ebp
jg 0x471cfa
jmp 0x4719fb
mov eax, dword [esp + 0x300]
test eax, eax
jle 0x471d59
mov ecx, dword [esp + 0x304]
cmp word [ecx + eax*2 - 2], 0
jne 0x471d59
dec eax
mov dword [esp + 0x300], eax
mov eax, dword [esp + 0x1c]
test eax, eax
jne 0x471d78
mov edx, dword [esp + 0x28]
lea eax, [esp + 0xcc]
push edx
push eax
call fcn.0047b200
add esp, 8
jmp 0x471d8e
mov ecx, dword [esp + 0x28]
push eax
lea edx, [esp + 0xd0]
push ecx
push edx
call fcn.0047b310
add esp, 0xc
mov edx, dword [esp + 0x124]
xor eax, eax
cmp edx, eax
je 0x471f4a
mov ecx, dword [esp + 0x2c]
cmp ecx, eax
je 0x471f4a
lea esi, [esp + 0x143c]
mov dword [esp + 0x670], esi
lea esi, [edx + ecx]
cmp esi, eax
mov dword [esp + 0x1c], esi
jle 0x471de4
mov ecx, esi
mov edx, dword [esp + 0x670]
inc eax
cmp eax, ecx
mov word [edx + eax*2 - 2], 0
jl 0x471dc6
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x124]
cmp edx, ecx
jl 0x471df5
lea esi, [esp + 0x124]
lea ebp, [esp + 0x2c]
jmp 0x471e00
lea esi, [esp + 0x2c]
lea ebp, [esp + 0x124]
lea eax, [esp + 0x143c]
xor ebx, ebx
mov dword [esp + 0x234], eax
mov dword [esp + 0x230], ebx
mov eax, dword [ebp]
mov dword [esp + 0x20], ebp
cmp eax, ebx
jle 0x471f15
mov ecx, dword [ebp + 4]
mov eax, dword [esi]
test eax, eax
mov di, word [ecx + ebx*2]
je 0x471ee5
test di, di
je 0x471ee5
cmp di, 1
jne 0x471e54
lea edx, [esp + 0x230]
push edx
push esi
jmp 0x471ed5
lea edx, [esp + 0x30ac]
xor eax, eax
mov dword [esp + 0x4e4], edx
mov ecx, dword [esi]
test ecx, ecx
jl 0x471e7e
lea ecx, [esp + 0x30ac]
mov word [ecx], 0
inc eax
add ecx, 2
cmp eax, dword [esi]
jle 0x471e71
mov ecx, dword [esi]
xor eax, eax
test ecx, ecx
jle 0x471eb4
mov ecx, edi
and ecx, 0xffff
mov edi, dword [esi + 4]
xor ebp, ebp
mov bp, word [edi + eax*2]
mov edi, dword [edx + eax*2]
imul ebp, ecx
add edi, ebp
mov dword [edx + eax*2], edi
mov edx, dword [esi]
inc eax
cmp eax, edx
mov edx, dword [esp + 0x4e4]
jl 0x471e8e
mov ebp, dword [esp + 0x20]
mov eax, dword [esi]
cmp word [edx + eax*2], 0
je 0x471ebe
inc eax
lea ecx, [esp + 0x230]
lea edx, [esp + 0x4e0]
push ecx
mov dword [esp + 0x4e4], eax
push edx
lea eax, [esp + 0x238]
push eax
call fcn.0047b3a0
add esp, 0xc
mov eax, dword [esp + 0x230]
test eax, eax
jle 0x471ef8
dec eax
mov dword [esp + 0x230], eax
mov edx, dword [esp + 0x234]
add edx, 2
inc ebx
mov dword [esp + 0x234], edx
mov eax, dword [ebp]
cmp ebx, eax
jl 0x471e26
mov ecx, dword [esp + 0x670]
mov eax, dword [esp + 0x1c]
cmp word [ecx + eax*2 - 2], 0
jne 0x471f29
dec eax
mov dword [esp + 0x66c], eax
lea edx, [esp + 0x124]
lea eax, [esp + 0x66c]
push edx
push eax
call fcn.0047b200
add esp, 8
jmp 0x471f51
mov dword [esp + 0x124], eax
lea edx, [esp + 0x2c0]
lea esi, [esp + 0x2c0]
lea ecx, [esp + 0x9290]
mov dword [esp + 0x28], esi
test edx, edx
mov dword [esp + 0x384], ecx
jne 0x471f8e
lea eax, [esp + 0x9394]
lea esi, [esp + 0x7ac]
mov dword [esp + 0x7b0], eax
mov dword [esp + 0x28], esi
mov eax, dword [esp + 0x124]
xor edi, edi
cmp eax, edi
jne 0x471fa9
mov dword [esp + 0x380], edi
mov dword [esi], edi
jmp 0x472460
cmp dword [esp + 0x10], 1
jne 0x471fc6
mov ecx, dword [esp + 0x14]
cmp word [ecx], 1
jne 0x471fc6
lea edx, [esp + 0x380]
jmp 0x47121f
lea ecx, [esp + 0x10]
lea edx, [esp + 0x124]
push ecx
push edx
call fcn.0047b240
add esp, 8
test eax, eax
jge 0x471feb
mov dword [esp + 0x380], edi
jmp 0x471257
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
mov ax, word [edx + ecx*2 - 2]
xor ecx, ecx
cmp ax, di
mov dword [esp + 0x20], eax
je 0x47200c
shr ax, 1
inc ecx
cmp ax, di
jne 0x472003
mov esi, 0x10
lea edx, [esp + 0x5c6c]
sub esi, ecx
lea ecx, [esp + 0x5b64]
mov dword [esp + 0x1c], esi
mov dword [esp + 0x6d8], ecx
mov dword [esp + 0x1bc], edx
jne 0x472061
lea eax, [esp + 0x6d4]
lea ecx, [esp + 0x124]
push eax
push ecx
call fcn.0047b200
lea edx, [esp + 0x1c0]
lea eax, [esp + 0x18]
push edx
push eax
call fcn.0047b200
add esp, 0x10
jmp 0x47208d
lea ecx, [esp + 0x6d4]
push esi
lea edx, [esp + 0x128]
push ecx
push edx
call fcn.0047b290
lea eax, [esp + 0x1c4]
push esi
lea ecx, [esp + 0x20]
push eax
push ecx
call fcn.0047b290
add esp, 0x18
mov eax, dword [esp + 0x6d4]
mov edx, dword [esp + 0x1b8]
mov esi, dword [esp + 0x384]
sub eax, edx
mov ebx, eax
mov edi, 2
lea ecx, [eax + 1]
mov eax, edx
mov edx, dword [esp + 0x6d8]
mov dword [esp + 0x380], ecx
lea esi, [esi + ecx*2 - 2]
mov dword [esp + 0x8c], eax
lea ecx, [edx + ebx*2]
mov dword [esp + 0x90], ecx
test eax, eax
jne 0x4720e6
mov word [esi], ax
mov dword [esp + 0x8c], eax
jmp 0x47239e
cmp dword [esp + 0x1b8], 1
jne 0x472197
cmp eax, 1
jne 0x472147
mov edx, dword [esp + 0x90]
xor eax, eax
xor ecx, ecx
mov ax, word [edx]
mov edx, dword [esp + 0x1bc]
mov cx, word [edx]
cdq
idiv ecx
xor edx, edx
mov word [esi], ax
mov ecx, dword [esp + 0x1bc]
imul ax, word [ecx]
mov ecx, dword [esp + 0x90]
sub word [ecx], ax
mov eax, dword [esp + 0x90]
cmp word [eax], dx
setne dl
mov dword [esp + 0x8c], edx
jmp 0x47239e
mov ecx, dword [esp + 0x90]
mov edx, dword [esp + 0x1bc]
xor ebp, ebp
mov ecx, dword [ecx]
mov bp, word [edx]
mov eax, ecx
xor edx, edx
div ebp
mov word [esi], ax
mov edx, dword [esp + 0x1bc]
imul ax, word [edx]
sub ecx, eax
mov eax, dword [esp + 0x90]
mov word [eax], cx
mov edx, dword [esp + 0x90]
xor ecx, ecx
cmp word [edx], cx
setne cl
mov dword [esp + 0x8c], ecx
jmp 0x47239e
lea eax, [esp + 0x8c]
lea ecx, [esp + 0x8c]
push eax
push ecx
call fcn.0047b200
lea edx, [esp + 0x1c0]
lea eax, [esp + 0x94]
push edx
push eax
call fcn.0047b240
add esp, 0x10
test eax, eax
jge 0x4721d2
mov word [esi], 0
jmp 0x47239e
mov eax, dword [esp + 0x8c]
mov ecx, dword [esp + 0x1b8]
cmp eax, ecx
jne 0x47220a
mov ebp, dword [esp + 0x1bc]
xor edx, edx
mov dx, word [ebp + ecx*2 - 2]
mov ebp, dword [esp + 0x90]
mov ecx, edx
xor edx, edx
mov dx, word [ebp + eax*2 - 2]
inc ecx
mov eax, edx
cdq
idiv ecx
jmp 0x47222a
mov edx, dword [esp + 0x90]
mov ebp, dword [esp + 0x1bc]
mov eax, dword [edx + eax*2 - 4]
xor edx, edx
mov dx, word [ebp + ecx*2 - 2]
mov ecx, edx
xor edx, edx
inc ecx
div ecx
lea edx, [esp + 0x9498]
mov word [esi], ax
mov dword [esp + 0x3e4], edx
mov edx, dword [esp + 0x1b8]
mov dword [esp + 0x3e0], 0
mov ax, word [esi]
test edx, edx
mov dword [esp + 0x20], eax
je 0x472329
test ax, ax
je 0x472329
cmp ax, 1
jne 0x472290
lea eax, [esp + 0x3e0]
lea ecx, [esp + 0x1b8]
push eax
lea edx, [esp + 0x3e4]
push ecx
push edx
call fcn.0047b3a0
add esp, 0xc
jmp 0x472329
lea ebp, [esp + 0x1644]
test edx, edx
mov dword [esp + 0x4f4], ebp
jl 0x4722b7
lea ecx, [edx + 1]
xor eax, eax
lea edi, [esp + 0x1644]
shr ecx, 1
rep stosd dword es:[edi], eax
adc ecx, ecx
rep stosw word es:[edi], ax
xor eax, eax
test edx, edx
jle 0x4722f4
mov ecx, dword [esp + 0x20]
and ecx, 0xffff
mov edi, dword [esp + 0x1bc]
xor edx, edx
mov dx, word [edi + eax*2]
mov edi, dword [ebp + eax*2]
imul edx, ecx
add edi, edx
mov dword [ebp + eax*2], edi
mov edx, dword [esp + 0x1b8]
mov ebp, dword [esp + 0x4f4]
inc eax
cmp eax, edx
jl 0x4722c7
cmp word [ebp + edx*2], 0
je 0x4722fd
inc edx
lea eax, [esp + 0x3e0]
mov dword [esp + 0x4f0], edx
lea ecx, [esp + 0x4f0]
push eax
lea edx, [esp + 0x3e4]
push ecx
push edx
call fcn.0047b3a0
add esp, 0xc
mov edi, 2
lea eax, [esp + 0x8c]
lea ecx, [esp + 0x3e0]
push eax
lea edx, [esp + 0x90]
push ecx
push edx
call fcn.0047b4a0
lea eax, [esp + 0x1c4]
lea ecx, [esp + 0x98]
push eax
push ecx
call fcn.0047b240
add esp, 0x14
test eax, eax
jl 0x47239e
lea edx, [esp + 0x8c]
lea eax, [esp + 0x1b8]
push edx
lea ecx, [esp + 0x90]
push eax
push ecx
call fcn.0047b4a0
inc word [esi]
lea edx, [esp + 0x1c4]
lea eax, [esp + 0x98]
push edx
push eax
call fcn.0047b240
add esp, 0x14
test eax, eax
jge 0x472362
test ebx, ebx
je 0x472409
mov eax, dword [esp + 0x8c]
mov ebp, dword [esp + 0x90]
sub esi, edi
inc eax
sub ebp, edi
dec ebx
test ebx, ebx
mov dword [esp + 0x8c], eax
mov dword [esp + 0x90], ebp
jle 0x4720d3
cmp eax, dword [esp + 0x1b8]
jge 0x4720d3
mov word [esi], 0
mov eax, dword [esp + 0x8c]
mov ebp, dword [esp + 0x90]
sub esi, edi
inc eax
sub ebp, edi
dec ebx
mov dword [esp + 0x8c], eax
test ebx, ebx
mov dword [esp + 0x90], ebp
jg 0x4723cc
jmp 0x4720d3
mov eax, dword [esp + 0x380]
test eax, eax
jle 0x47242b
mov ecx, dword [esp + 0x384]
cmp word [ecx + eax*2 - 2], 0
jne 0x47242b
dec eax
mov dword [esp + 0x380], eax
mov eax, dword [esp + 0x1c]
test eax, eax
jne 0x47244a
mov edx, dword [esp + 0x28]
lea eax, [esp + 0x8c]
push edx
push eax
call fcn.0047b200
add esp, 8
jmp 0x472460
mov ecx, dword [esp + 0x28]
push eax
push ecx
lea edx, [esp + 0x94]
push edx
call fcn.0047b310
add esp, 0xc
mov ecx, dword [esp + 0x18]
lea eax, [esp + 0x3c]
push eax
push ecx
call fcn.0047b200
add esp, 8
mov dword [esp + 0x1c], 2
mov edx, dword [esp + 0x3c]
xor eax, eax
cmp edx, eax
je 0x472600
lea ecx, [esp + 0x3ee4]
mov dword [esp + 0x504], ecx
lea ecx, [edx + edx]
cmp ecx, eax
mov dword [esp + 0x20], ecx
jle 0x4724b8
mov edx, dword [esp + 0x504]
inc eax
cmp eax, ecx
mov word [edx + eax*2 - 2], 0
jl 0x4724a1
mov edx, dword [esp + 0x3c]
lea eax, [esp + 0x3ee4]
xor ebx, ebx
test edx, edx
mov dword [esp + 0x274], eax
mov dword [esp + 0x270], 0
jle 0x4725ce
mov ecx, dword [esp + 0x40]
test edx, edx
mov bp, word [ecx + ebx*2]
je 0x4725a1
test bp, bp
je 0x4725a1
cmp bp, 1
jne 0x472514
lea edx, [esp + 0x270]
lea eax, [esp + 0x3c]
push edx
lea ecx, [esp + 0x274]
push eax
push ecx
jmp 0x472595
lea esi, [esp + 0x184c]
test edx, edx
mov dword [esp + 0x5d0], esi
jl 0x47253b
lea ecx, [edx + 1]
xor eax, eax
lea edi, [esp + 0x184c]
shr ecx, 1
rep stosd dword es:[edi], eax
adc ecx, ecx
rep stosw word es:[edi], ax
xor eax, eax
test edx, edx
jle 0x47256e
mov ecx, ebp
and ecx, 0xffff
mov edi, dword [esp + 0x40]
xor edx, edx
mov ebp, dword [esi + eax*2]
mov dx, word [edi + eax*2]
imul edx, ecx
add ebp, edx
mov dword [esi + eax*2], ebp
mov edx, dword [esp + 0x3c]
mov esi, dword [esp + 0x5d0]
inc eax
cmp eax, edx
jl 0x472549
cmp word [esi + edx*2], 0
je 0x472576
inc edx
lea eax, [esp + 0x270]
mov dword [esp + 0x5cc], edx
lea ecx, [esp + 0x5cc]
push eax
lea edx, [esp + 0x274]
push ecx
push edx
call fcn.0047b3a0
mov edx, dword [esp + 0x48]
add esp, 0xc
mov eax, dword [esp + 0x270]
test eax, eax
jle 0x4725b4
dec eax
mov dword [esp + 0x270], eax
mov esi, dword [esp + 0x274]
add esi, 2
inc ebx
cmp ebx, edx
mov dword [esp + 0x274], esi
jl 0x4724db
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x504]
cmp word [ecx + eax*2 - 2], 0
jne 0x4725e2
dec eax
mov dword [esp + 0x500], eax
lea edx, [esp + 0x3c]
lea eax, [esp + 0x500]
push edx
push eax
call fcn.0047b200
add esp, 8
jmp 0x472604
mov dword [esp + 0x3c], eax
lea edx, [esp + 0x3c]
lea esi, [esp + 0x3c]
lea ecx, [esp + 0x959c]
mov dword [esp + 0x28], esi
test edx, edx
mov dword [esp + 0x314], ecx
jne 0x47263b
lea eax, [esp + 0x96a0]
lea esi, [esp + 0x844]
mov dword [esp + 0x848], eax
mov dword [esp + 0x28], esi
mov eax, dword [esp + 0x3c]
xor edi, edi
cmp eax, edi
jne 0x472653
mov dword [esp + 0x310], edi
mov dword [esi], edi
jmp 0x472b1f
cmp dword [esp + 0x10], 1
jne 0x472680
mov ecx, dword [esp + 0x14]
cmp word [ecx], 1
jne 0x472680
lea edx, [esp + 0x310]
lea eax, [esp + 0x3c]
push edx
push eax
call fcn.0047b200
add esp, 8
mov dword [esi], edi
jmp 0x472b1f
lea ecx, [esp + 0x10]
lea edx, [esp + 0x3c]
push ecx
push edx
call fcn.0047b240
add esp, 8
test eax, eax
jge 0x4726b0
lea eax, [esp + 0x3c]
push esi
push eax
mov dword [esp + 0x318], edi
call fcn.0047b200
add esp, 8
jmp 0x472b1f
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
mov ax, word [edx + ecx*2 - 2]
xor ecx, ecx
cmp ax, di
mov dword [esp + 0x18], eax
je 0x4726d1
shr ax, 1
inc ecx
cmp ax, di
jne 0x4726c8
mov esi, 0x10
lea edx, [esp + 0x5e78]
sub esi, ecx
lea ecx, [esp + 0x5d70]
mov dword [esp + 0x20], esi
mov dword [esp + 0x738], ecx
mov dword [esp + 0x17c], edx
jne 0x472723
lea eax, [esp + 0x734]
lea ecx, [esp + 0x3c]
push eax
push ecx
call fcn.0047b200
lea edx, [esp + 0x180]
lea eax, [esp + 0x18]
push edx
push eax
call fcn.0047b200
add esp, 0x10
jmp 0x47274c
lea ecx, [esp + 0x734]
push esi
lea edx, [esp + 0x40]
push ecx
push edx
call fcn.0047b290
lea eax, [esp + 0x184]
push esi
lea ecx, [esp + 0x20]
push eax
push ecx
call fcn.0047b290
add esp, 0x18
mov eax, dword [esp + 0x734]
mov edx, dword [esp + 0x178]
mov esi, dword [esp + 0x314]
sub eax, edx
mov ebx, eax
mov edi, 2
lea ecx, [eax + 1]
mov eax, edx
mov edx, dword [esp + 0x738]
mov dword [esp + 0x310], ecx
lea esi, [esi + ecx*2 - 2]
mov dword [esp + 0x10c], eax
lea ecx, [edx + ebx*2]
mov dword [esp + 0x110], ecx
test eax, eax
jne 0x4727a5
mov word [esi], ax
mov dword [esp + 0x10c], eax
jmp 0x472a5d
cmp dword [esp + 0x178], 1
jne 0x472856
cmp eax, 1
jne 0x472806
mov edx, dword [esp + 0x110]
xor eax, eax
xor ecx, ecx
mov ax, word [edx]
mov edx, dword [esp + 0x17c]
mov cx, word [edx]
cdq
idiv ecx
xor edx, edx
mov word [esi], ax
mov ecx, dword [esp + 0x17c]
imul ax, word [ecx]
mov ecx, dword [esp + 0x110]
sub word [ecx], ax
mov eax, dword [esp + 0x110]
cmp word [eax], dx
setne dl
mov dword [esp + 0x10c], edx
jmp 0x472a5d
mov ecx, dword [esp + 0x110]
mov edx, dword [esp + 0x17c]
xor ebp, ebp
mov ecx, dword [ecx]
mov bp, word [edx]
mov eax, ecx
xor edx, edx
div ebp
mov word [esi], ax
mov edx, dword [esp + 0x17c]
imul ax, word [edx]
sub ecx, eax
mov eax, dword [esp + 0x110]
mov word [eax], cx
mov edx, dword [esp + 0x110]
xor ecx, ecx
cmp word [edx], cx
setne cl
mov dword [esp + 0x10c], ecx
jmp 0x472a5d
lea eax, [esp + 0x10c]
lea ecx, [esp + 0x10c]
push eax
push ecx
call fcn.0047b200
lea edx, [esp + 0x180]
lea eax, [esp + 0x114]
push edx
push eax
call fcn.0047b240
add esp, 0x10
test eax, eax
jge 0x472891
mov word [esi], 0
jmp 0x472a5d
mov eax, dword [esp + 0x10c]
mov ecx, dword [esp + 0x178]
cmp eax, ecx
jne 0x4728c9
mov ebp, dword [esp + 0x17c]
xor edx, edx
mov dx, word [ebp + ecx*2 - 2]
mov ebp, dword [esp + 0x110]
mov ecx, edx
xor edx, edx
mov dx, word [ebp + eax*2 - 2]
inc ecx
mov eax, edx
cdq
idiv ecx
jmp 0x4728e9
mov edx, dword [esp + 0x110]
mov ebp, dword [esp + 0x17c]
mov eax, dword [edx + eax*2 - 4]
xor edx, edx
mov dx, word [ebp + ecx*2 - 2]
mov ecx, edx
xor edx, edx
inc ecx
div ecx
lea edx, [esp + 0xd69c]
mov word [esi], ax
mov dword [esp + 0x464], edx
mov edx, dword [esp + 0x178]
mov dword [esp + 0x460], 0
mov ax, word [esi]
test edx, edx
mov dword [esp + 0x18], eax
je 0x4729e8
test ax, ax
je 0x4729e8
cmp ax, 1
jne 0x47294f
lea eax, [esp + 0x460]
lea ecx, [esp + 0x178]
push eax
lea edx, [esp + 0x464]
push ecx
push edx
call fcn.0047b3a0
add esp, 0xc
jmp 0x4729e8
lea ebp, [esp + 0x32b4]
test edx, edx
mov dword [esp + 0x640], ebp
jl 0x472976
lea ecx, [edx + 1]
xor eax, eax
lea edi, [esp + 0x32b4]
shr ecx, 1
rep stosd dword es:[edi], eax
adc ecx, ecx
rep stosw word es:[edi], ax
xor eax, eax
test edx, edx
jle 0x4729b3
mov ecx, dword [esp + 0x18]
and ecx, 0xffff
mov edi, dword [esp + 0x17c]
xor edx, edx
mov dx, word [edi + eax*2]
mov edi, dword [ebp + eax*2]
imul edx, ecx
add edi, edx
mov dword [ebp + eax*2], edi
mov edx, dword [esp + 0x178]
mov ebp, dword [esp + 0x640]
inc eax
cmp eax, edx
jl 0x472986
cmp word [ebp + edx*2], 0
je 0x4729bc
inc edx
lea eax, [esp + 0x460]
mov dword [esp + 0x63c], edx
lea ecx, [esp + 0x63c]
push eax
lea edx, [esp + 0x464]
push ecx
push edx
call fcn.0047b3a0
add esp, 0xc
mov edi, 2
lea eax, [esp + 0x10c]
lea ecx, [esp + 0x460]
push eax
lea edx, [esp + 0x110]
push ecx
push edx
call fcn.0047b4a0
lea eax, [esp + 0x184]
lea ecx, [esp + 0x118]
push eax
push ecx
call fcn.0047b240
add esp, 0x14
test eax, eax
jl 0x472a5d
lea edx, [esp + 0x10c]
lea eax, [esp + 0x178]
push edx
lea ecx, [esp + 0x110]
push eax
push ecx
call fcn.0047b4a0
inc word [esi]
lea edx, [esp + 0x184]
lea eax, [esp + 0x118]
push edx
push eax
call fcn.0047b240
add esp, 0x14
test eax, eax
jge 0x472a21
test ebx, ebx
je 0x472ac8
mov eax, dword [esp + 0x10c]
mov ebp, dword [esp + 0x110]
sub esi, edi
inc eax
sub ebp, edi
dec ebx
test ebx, ebx
mov dword [esp + 0x10c], eax
mov dword [esp + 0x110], ebp
jle 0x472792
cmp eax, dword [esp + 0x178]
jge 0x472792
mov word [esi], 0
mov eax, dword [esp + 0x10c]
mov ebp, dword [esp + 0x110]
sub esi, edi
inc eax
sub ebp, edi
dec ebx
mov dword [esp + 0x10c], eax
test ebx, ebx
mov dword [esp + 0x110], ebp
jg 0x472a8b
jmp 0x472792
mov eax, dword [esp + 0x310]
test eax, eax
jle 0x472aea
mov ecx, dword [esp + 0x314]
cmp word [ecx + eax*2 - 2], 0
jne 0x472aea
dec eax
mov dword [esp + 0x310], eax
mov eax, dword [esp + 0x20]
test eax, eax
jne 0x472b09
mov edx, dword [esp + 0x28]
lea eax, [esp + 0x10c]
push edx
push eax
call fcn.0047b200
add esp, 8
jmp 0x472b1f
mov ecx, dword [esp + 0x28]
push eax
lea edx, [esp + 0x110]
push ecx
push edx
call fcn.0047b310
add esp, 0xc
mov eax, dword [esp + 0x1c]
dec eax
mov dword [esp + 0x1c], eax
jne 0x47247a
mov al, byte [esp + 0x3b4]
test al, al
je 0x474b97
mov eax, dword [esp + 0x3b4]
and eax, 0xff
mov ecx, dword [esp + eax*8 + 0x2a8]
lea eax, [esp + eax*8 + 0x2a8]
test ecx, ecx
mov dword [esp + 0x1c], eax
jne 0x4744aa
mov al, byte [esp + 0x3b4]
cmp al, 1
jne 0x473092
lea edx, [esp + 0x2b0]
lea esi, [esp + 0x2b0]
lea ecx, [esp + 0x98a8]
mov dword [esp + 0x28], esi
test edx, edx
mov dword [esp + 0x354], ecx
jne 0x472baf
lea eax, [esp + 0x99ac]
lea esi, [esp + 0x7bc]
mov dword [esp + 0x7c0], eax
mov dword [esp + 0x28], esi
mov eax, dword [esp + 0x2c]
xor edi, edi
cmp eax, edi
jne 0x472bc7
mov dword [esp + 0x350], edi
mov dword [esi], edi
jmp 0x4744aa
cmp dword [esp + 0x10], 1
jne 0x472bf4
mov ecx, dword [esp + 0x14]
cmp word [ecx], 1
jne 0x472bf4
lea edx, [esp + 0x350]
lea eax, [esp + 0x2c]
push edx
push eax
call fcn.0047b200
add esp, 8
mov dword [esi], edi
jmp 0x4744aa
lea ecx, [esp + 0x10]
lea edx, [esp + 0x2c]
push ecx
push edx
call fcn.0047b240
add esp, 8
test eax, eax
jge 0x472c24
lea eax, [esp + 0x2c]
push esi
push eax
mov dword [esp + 0x358], edi
call fcn.0047b200
add esp, 8
jmp 0x4744aa
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
mov ax, word [edx + ecx*2 - 2]
xor ecx, ecx
cmp ax, di
mov dword [esp + 0x18], eax
je 0x472c45
shr ax, 1
inc ecx
cmp ax, di
jne 0x472c3c
mov esi, 0x10
lea edx, [esp + 0x6084]
sub esi, ecx
lea ecx, [esp + 0x5f7c]
mov dword [esp + 0x20], esi
mov dword [esp + 0x6e8], ecx
mov dword [esp + 0x1fc], edx
jne 0x472c97
lea eax, [esp + 0x6e4]
lea ecx, [esp + 0x2c]
push eax
push ecx
call fcn.0047b200
lea edx, [esp + 0x200]
lea eax, [esp + 0x18]
push edx
push eax
call fcn.0047b200
add esp, 0x10
jmp 0x472cc0
lea ecx, [esp + 0x6e4]
push esi
lea edx, [esp + 0x30]
push ecx
push edx
call fcn.0047b290
lea eax, [esp + 0x204]
push esi
lea ecx, [esp + 0x20]
push eax
push ecx
call fcn.0047b290
add esp, 0x18
mov eax, dword [esp + 0x6e4]
mov edx, dword [esp + 0x1f8]
mov esi, dword [esp + 0x354]
sub eax, edx
mov ebx, eax
mov edi, 2
lea ecx, [eax + 1]
mov eax, edx
mov edx, dword [esp + 0x6e8]
mov dword [esp + 0x350], ecx
lea esi, [esi + ecx*2 - 2]
mov dword [esp + 0x9c], eax
lea ecx, [edx + ebx*2]
mov dword [esp + 0xa0], ecx
test eax, eax
jne 0x472d19
mov word [esi], ax
mov dword [esp + 0x9c], eax
jmp 0x472fd1
cmp dword [esp + 0x1f8], 1
jne 0x472dca
cmp eax, 1
jne 0x472d7a
mov edx, dword [esp + 0xa0]
xor eax, eax
xor ecx, ecx
mov ax, word [edx]
mov edx, dword [esp + 0x1fc]
mov cx, word [edx]
cdq
idiv ecx
xor edx, edx
mov word [esi], ax
mov ecx, dword [esp + 0x1fc]
imul ax, word [ecx]
mov ecx, dword [esp + 0xa0]
sub word [ecx], ax
mov eax, dword [esp + 0xa0]
cmp word [eax], dx
setne dl
mov dword [esp + 0x9c], edx
jmp 0x472fd1
mov ecx, dword [esp + 0xa0]
mov edx, dword [esp + 0x1fc]
xor ebp, ebp
mov ecx, dword [ecx]
mov bp, word [edx]
mov eax, ecx
xor edx, edx
div ebp
mov word [esi], ax
mov edx, dword [esp + 0x1fc]
imul ax, word [edx]
sub ecx, eax
mov eax, dword [esp + 0xa0]
mov word [eax], cx
mov edx, dword [esp + 0xa0]
xor ecx, ecx
cmp word [edx], cx
setne cl
mov dword [esp + 0x9c], ecx
jmp 0x472fd1
lea eax, [esp + 0x9c]
lea ecx, [esp + 0x9c]
push eax
push ecx
call fcn.0047b200
lea edx, [esp + 0x200]
lea eax, [esp + 0xa4]
push edx
push eax
call fcn.0047b240
add esp, 0x10
test eax, eax
jge 0x472e05
mov word [esi], 0
jmp 0x472fd1
mov eax, dword [esp + 0x9c]
mov ecx, dword [esp + 0x1f8]
cmp eax, ecx
jne 0x472e3d
mov ebp, dword [esp + 0x1fc]
xor edx, edx
mov dx, word [ebp + ecx*2 - 2]
mov ebp, dword [esp + 0xa0]
mov ecx, edx
xor edx, edx
mov dx, word [ebp + eax*2 - 2]
inc ecx
mov eax, edx
cdq
idiv ecx
jmp 0x472e5d
mov edx, dword [esp + 0xa0]
mov ebp, dword [esp + 0x1fc]
mov eax, dword [edx + eax*2 - 4]
xor edx, edx
mov dx, word [ebp + ecx*2 - 2]
mov ecx, edx
xor edx, edx
inc ecx
div ecx
lea edx, [esp + 0x97a4]
mov word [esi], ax
mov dword [esp + 0x3f4], edx
mov edx, dword [esp + 0x1f8]
mov dword [esp + 0x3f0], 0
mov ax, word [esi]
test edx, edx
mov dword [esp + 0x18], eax
je 0x472f5c
test ax, ax
je 0x472f5c
cmp ax, 1
jne 0x472ec3
lea eax, [esp + 0x3f0]
lea ecx, [esp + 0x1f8]
push eax
lea edx, [esp + 0x3f4]
push ecx
push edx
call fcn.0047b3a0
add esp, 0xc
jmp 0x472f5c
lea ebp, [esp + 0x1a54]
test edx, edx
mov dword [esp + 0x514], ebp
jl 0x472eea
lea ecx, [edx + 1]
xor eax, eax
lea edi, [esp + 0x1a54]
shr ecx, 1
rep stosd dword es:[edi], eax
adc ecx, ecx
rep stosw word es:[edi], ax
xor eax, eax
test edx, edx
jle 0x472f27
mov ecx, dword [esp + 0x18]
and ecx, 0xffff
mov edi, dword [esp + 0x1fc]
xor edx, edx
mov dx, word [edi + eax*2]
mov edi, dword [ebp + eax*2]
imul edx, ecx
add edi, edx
mov dword [ebp + eax*2], edi
mov edx, dword [esp + 0x1f8]
mov ebp, dword [esp + 0x514]
inc eax
cmp eax, edx
jl 0x472efa
cmp word [ebp + edx*2], 0
je 0x472f30
inc edx
lea eax, [esp + 0x3f0]
mov dword [esp + 0x510], edx
lea ecx, [esp + 0x510]
push eax
lea edx, [esp + 0x3f4]
push ecx
push edx
call fcn.0047b3a0
add esp, 0xc
mov edi, 2
lea eax, [esp + 0x9c]
lea ecx, [esp + 0x3f0]
push eax
lea edx, [esp + 0xa0]
push ecx
push edx
call fcn.0047b4a0
lea eax, [esp + 0x204]
lea ecx, [esp + 0xa8]
push eax
push ecx
call fcn.0047b240
add esp, 0x14
test eax, eax
jl 0x472fd1
lea edx, [esp + 0x9c]
lea eax, [esp + 0x1f8]
push edx
lea ecx, [esp + 0xa0]
push eax
push ecx
call fcn.0047b4a0
inc word [esi]
lea edx, [esp + 0x204]
lea eax, [esp + 0xa8]
push edx
push eax
call fcn.0047b240
add esp, 0x14
test eax, eax
jge 0x472f95
test ebx, ebx
je 0x47303c
mov eax, dword [esp + 0x9c]
mov ebp, dword [esp + 0xa0]
sub esi, edi
inc eax
sub ebp, edi
dec ebx
test ebx, ebx
mov dword [esp + 0x9c], eax
mov dword [esp + 0xa0], ebp
jle 0x472d06
cmp eax, dword [esp + 0x1f8]
jge 0x472d06
mov word [esi], 0
mov eax, dword [esp + 0x9c]
mov ebp, dword [esp + 0xa0]
sub esi, edi
inc eax
sub ebp, edi
dec ebx
mov dword [esp + 0x9c], eax
test ebx, ebx
mov dword [esp + 0xa0], ebp
jg 0x472fff
jmp 0x472d06
mov eax, dword [esp + 0x350]
test eax, eax
jle 0x47305e
mov ecx, dword [esp + 0x354]
cmp word [ecx + eax*2 - 2], 0
jne 0x47305e
dec eax
mov dword [esp + 0x350], eax
mov eax, dword [esp + 0x20]
test eax, eax
jne 0x473080
mov edx, dword [esp + 0x28]
lea eax, [esp + 0x9c]
push edx
push eax
call fcn.0047b200
add esp, 8
jmp 0x4744aa
mov ecx, dword [esp + 0x28]
push eax
push ecx
lea edx, [esp + 0xa4]
jmp 0x4744a1
lea ecx, [esp + 0x6290]
cmp al, 2
mov dword [esp + 0x138], ecx
jne 0x473707
mov edx, dword [esp + 0x2c]
xor eax, eax
cmp edx, eax
je 0x473231
lea ecx, [esp + 0x490c]
mov dword [esp + 0x524], ecx
lea ecx, [edx + edx]
cmp ecx, eax
mov dword [esp + 0x20], ecx
jle 0x4730e6
mov edx, dword [esp + 0x524]
inc eax
cmp eax, ecx
mov word [edx + eax*2 - 2], 0
jl 0x4730cf
mov edx, dword [esp + 0x2c]
lea eax, [esp + 0x490c]
xor ebx, ebx
test edx, edx
mov dword [esp + 0x244], eax
mov dword [esp + 0x240], 0
jle 0x4731fc
mov ecx, dword [esp + 0x30]
test edx, edx
mov bp, word [ecx + ebx*2]
je 0x4731cf
test bp, bp
je 0x4731cf
cmp bp, 1
jne 0x473142
lea edx, [esp + 0x240]
lea eax, [esp + 0x2c]
push edx
lea ecx, [esp + 0x244]
push eax
push ecx
jmp 0x4731c3
lea esi, [esp + 0x1c5c]
test edx, edx
mov dword [esp + 0x5e0], esi
jl 0x473169
lea ecx, [edx + 1]
xor eax, eax
lea edi, [esp + 0x1c5c]
shr ecx, 1
rep stosd dword es:[edi], eax
adc ecx, ecx
rep stosw word es:[edi], ax
xor eax, eax
test edx, edx
jle 0x47319c
mov ecx, ebp
and ecx, 0xffff
mov edi, dword [esp + 0x30]
xor edx, edx
mov ebp, dword [esi + eax*2]
mov dx, word [edi + eax*2]
imul edx, ecx
add ebp, edx
mov dword [esi + eax*2], ebp
mov edx, dword [esp + 0x2c]
mov esi, dword [esp + 0x5e0]
inc eax
cmp eax, edx
jl 0x473177
cmp word [esi + edx*2], 0
je 0x4731a4
inc edx
lea eax, [esp + 0x240]
mov dword [esp + 0x5dc], edx
lea ecx, [esp + 0x5dc]
push eax
lea edx, [esp + 0x244]
push ecx
push edx
call fcn.0047b3a0
mov edx, dword [esp + 0x38]
add esp, 0xc
mov eax, dword [esp + 0x240]
test eax, eax
jle 0x4731e2
dec eax
mov dword [esp + 0x240], eax
mov esi, dword [esp + 0x244]
add esi, 2
inc ebx
cmp ebx, edx
mov dword [esp + 0x244], esi
jl 0x473109
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x524]
cmp word [ecx + eax*2 - 2], 0
jne 0x473210
dec eax
mov dword [esp + 0x520], eax
lea edx, [esp + 0x134]
lea eax, [esp + 0x520]
push edx
push eax
call fcn.0047b200
add esp, 8
jmp 0x473238
mov dword [esp + 0x134], eax
lea edx, [esp + 0x2b8]
lea esi, [esp + 0x2b8]
lea ecx, [esp + 0x9bb4]
mov dword [esp + 0x28], esi
test edx, edx
mov dword [esp + 0x324], ecx
jne 0x473275
lea eax, [esp + 0x9cb8]
lea esi, [esp + 0x81c]
mov dword [esp + 0x820], eax
mov dword [esp + 0x28], esi
mov eax, dword [esp + 0x134]
xor edi, edi
cmp eax, edi
jne 0x473290
mov dword [esp + 0x320], edi
mov dword [esi], edi
jmp 0x4744aa
cmp dword [esp + 0x10], 1
jne 0x4732c0
mov ecx, dword [esp + 0x14]
cmp word [ecx], 1
jne 0x4732c0
lea edx, [esp + 0x320]
lea eax, [esp + 0x134]
push edx
push eax
call fcn.0047b200
add esp, 8
mov dword [esi], edi
jmp 0x4744aa
lea ecx, [esp + 0x10]
lea edx, [esp + 0x134]
push ecx
push edx
call fcn.0047b240
add esp, 8
test eax, eax
jge 0x4732f6
mov dword [esp + 0x320], edi
lea eax, [esp + 0x134]
push esi
push eax
call fcn.0047b200
add esp, 8
jmp 0x4744aa
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
mov ax, word [edx + ecx*2 - 2]
xor ecx, ecx
cmp ax, di
mov dword [esp + 0x18], eax
je 0x473317
shr ax, 1
inc ecx
cmp ax, di
jne 0x47330e
mov esi, 0x10
lea edx, [esp + 0xbc34]
sub esi, ecx
lea ecx, [esp + 0x6188]
mov dword [esp + 0x20], esi
mov dword [esp + 0x758], ecx
mov dword [esp + 0x18c], edx
jne 0x47336c
lea eax, [esp + 0x754]
lea ecx, [esp + 0x134]
push eax
push ecx
call fcn.0047b200
lea edx, [esp + 0x190]
lea eax, [esp + 0x18]
push edx
push eax
call fcn.0047b200
add esp, 0x10
jmp 0x473398
lea ecx, [esp + 0x754]
push esi
lea edx, [esp + 0x138]
push ecx
push edx
call fcn.0047b290
lea eax, [esp + 0x194]
push esi
lea ecx, [esp + 0x20]
push eax
push ecx
call fcn.0047b290
add esp, 0x18
mov eax, dword [esp + 0x754]
mov edx, dword [esp + 0x188]
mov esi, dword [esp + 0x324]
sub eax, edx
mov ebx, eax
mov edi, 2
lea ecx, [eax + 1]
mov eax, edx
mov edx, dword [esp + 0x758]
mov dword [esp + 0x320], ecx
lea esi, [esi + ecx*2 - 2]
mov dword [esp + 0x54], eax
lea ecx, [edx + ebx*2]
mov dword [esp + 0x58], ecx
test eax, eax
jne 0x4733e8
mov word [esi], ax
mov dword [esp + 0x54], eax
jmp 0x473664
cmp dword [esp + 0x188], 1
jne 0x473481
cmp eax, 1
jne 0x47343d
mov edx, dword [esp + 0x58]
xor eax, eax
xor ecx, ecx
mov ax, word [edx]
mov edx, dword [esp + 0x18c]
mov cx, word [edx]
cdq
idiv ecx
xor edx, edx
mov word [esi], ax
mov ecx, dword [esp + 0x18c]
imul ax, word [ecx]
mov ecx, dword [esp + 0x58]
sub word [ecx], ax
mov eax, dword [esp + 0x58]
cmp word [eax], dx
setne dl
mov dword [esp + 0x54], edx
jmp 0x473664
mov ecx, dword [esp + 0x58]
mov edx, dword [esp + 0x18c]
xor ebp, ebp
mov ecx, dword [ecx]
mov bp, word [edx]
mov eax, ecx
xor edx, edx
div ebp
mov word [esi], ax
mov edx, dword [esp + 0x18c]
imul ax, word [edx]
sub ecx, eax
mov eax, dword [esp + 0x58]
mov word [eax], cx
mov edx, dword [esp + 0x58]
xor ecx, ecx
cmp word [edx], cx
setne cl
mov dword [esp + 0x54], ecx
jmp 0x473664
lea eax, [esp + 0x54]
lea ecx, [esp + 0x54]
push eax
push ecx
call fcn.0047b200
lea edx, [esp + 0x190]
lea eax, [esp + 0x5c]
push edx
push eax
call fcn.0047b240
add esp, 0x10
test eax, eax
jge 0x4734b3
mov word [esi], 0
jmp 0x473664
mov eax, dword [esp + 0x54]
mov ecx, dword [esp + 0x188]
cmp eax, ecx
jne 0x4734e5
mov ebp, dword [esp + 0x18c]
xor edx, edx
mov dx, word [ebp + ecx*2 - 2]
mov ebp, dword [esp + 0x58]
mov ecx, edx
xor edx, edx
mov dx, word [ebp + eax*2 - 2]
inc ecx
mov eax, edx
cdq
idiv ecx
jmp 0x473502
mov edx, dword [esp + 0x58]
mov ebp, dword [esp + 0x18c]
mov eax, dword [edx + eax*2 - 4]
xor edx, edx
mov dx, word [ebp + ecx*2 - 2]
mov ecx, edx
xor edx, edx
inc ecx
div ecx
lea edx, [esp + 0x649c]
mov word [esi], ax
mov dword [esp + 0x444], edx
mov edx, dword [esp + 0x188]
mov dword [esp + 0x440], 0
mov ax, word [esi]
test edx, edx
mov dword [esp + 0x18], eax
je 0x473601
test ax, ax
je 0x473601
cmp ax, 1
jne 0x473568
lea eax, [esp + 0x440]
lea ecx, [esp + 0x188]
push eax
lea edx, [esp + 0x444]
push ecx
push edx
call fcn.0047b3a0
add esp, 0xc
jmp 0x473601
lea ebp, [esp + 0x34bc]
test edx, edx
mov dword [esp + 0x690], ebp
jl 0x47358f
lea ecx, [edx + 1]
xor eax, eax
lea edi, [esp + 0x34bc]
shr ecx, 1
rep stosd dword es:[edi], eax
adc ecx, ecx
rep stosw word es:[edi], ax
xor eax, eax
test edx, edx
jle 0x4735cc
mov ecx, dword [esp + 0x18]
and ecx, 0xffff
mov edi, dword [esp + 0x18c]
xor edx, edx
mov dx, word [edi + eax*2]
mov edi, dword [ebp + eax*2]
imul edx, ecx
add edi, edx
mov dword [ebp + eax*2], edi
mov edx, dword [esp + 0x188]
mov ebp, dword [esp + 0x690]
inc eax
cmp eax, edx
jl 0x47359f
cmp word [ebp + edx*2], 0
je 0x4735d5
inc edx
lea eax, [esp + 0x440]
mov dword [esp + 0x68c], edx
lea ecx, [esp + 0x68c]
push eax
lea edx, [esp + 0x444]
push ecx
push edx
call fcn.0047b3a0
add esp, 0xc
mov edi, 2
lea eax, [esp + 0x54]
lea ecx, [esp + 0x440]
push eax
lea edx, [esp + 0x58]
push ecx
push edx
call fcn.0047b4a0
lea eax, [esp + 0x194]
lea ecx, [esp + 0x60]
push eax
push ecx
call fcn.0047b240
add esp, 0x14
test eax, eax
jl 0x473664
lea edx, [esp + 0x54]
lea eax, [esp + 0x188]
push edx
lea ecx, [esp + 0x58]
push eax
push ecx
call fcn.0047b4a0
inc word [esi]
lea edx, [esp + 0x194]
lea eax, [esp + 0x60]
push edx
push eax
call fcn.0047b240
add esp, 0x14
test eax, eax
jge 0x473631
test ebx, ebx
je 0x4736b7
mov eax, dword [esp + 0x54]
mov ebp, dword [esp + 0x58]
sub esi, edi
inc eax
sub ebp, edi
dec ebx
test ebx, ebx
mov dword [esp + 0x54], eax
mov dword [esp + 0x58], ebp
jle 0x4733d8
cmp eax, dword [esp + 0x188]
jge 0x4733d8
mov word [esi], 0
mov eax, dword [esp + 0x54]
mov ebp, dword [esp + 0x58]
sub esi, edi
inc eax
sub ebp, edi
dec ebx
mov dword [esp + 0x54], eax
test ebx, ebx
mov dword [esp + 0x58], ebp
jg 0x473686
jmp 0x4733d8
mov eax, dword [esp + 0x320]
test eax, eax
jle 0x4736d9
mov ecx, dword [esp + 0x324]
cmp word [ecx + eax*2 - 2], 0
jne 0x4736d9
dec eax
mov dword [esp + 0x320], eax
mov eax, dword [esp + 0x20]
test eax, eax
jne 0x4736f8
mov edx, dword [esp + 0x28]
lea eax, [esp + 0x54]
push edx
push eax
call fcn.0047b200
add esp, 8
jmp 0x4744aa
mov ecx, dword [esp + 0x28]
push eax
push ecx
lea edx, [esp + 0x5c]
jmp 0x4744a1
cmp al, 3
jne 0x4744aa
mov edx, dword [esp + 0x2c]
xor eax, eax
cmp edx, eax
je 0x473898
lea ecx, [esp + 0x1e64]
mov dword [esp + 0x5f0], ecx
lea ecx, [edx + edx]
cmp ecx, eax
mov dword [esp + 0x20], ecx
jle 0x47374d
mov edx, dword [esp + 0x5f0]
inc eax
cmp eax, ecx
mov word [edx + eax*2 - 2], 0
jl 0x473736
mov edx, dword [esp + 0x2c]
lea eax, [esp + 0x1e64]
xor ebx, ebx
test edx, edx
mov dword [esp + 0x294], eax
mov dword [esp + 0x290], 0
jle 0x473863
mov ecx, dword [esp + 0x30]
test edx, edx
mov bp, word [ecx + ebx*2]
je 0x473836
test bp, bp
je 0x473836
cmp bp, 1
jne 0x4737a9
lea edx, [esp + 0x290]
lea eax, [esp + 0x2c]
push edx
lea ecx, [esp + 0x294]
push eax
push ecx
jmp 0x47382a
lea esi, [esp + 0x40ec]
test edx, edx
mov dword [esp + 0x534], esi
jl 0x4737d0
lea ecx, [edx + 1]
xor eax, eax
lea edi, [esp + 0x40ec]
shr ecx, 1
rep stosd dword es:[edi], eax
adc ecx, ecx
rep stosw word es:[edi], ax
xor eax, eax
test edx, edx
jle 0x473803
mov ecx, ebp
and ecx, 0xffff
mov edi, dword [esp + 0x30]
xor edx, edx
mov ebp, dword [esi + eax*2]
mov dx, word [edi + eax*2]
imul edx, ecx
add ebp, edx
mov dword [esi + eax*2], ebp
mov edx, dword [esp + 0x2c]
mov esi, dword [esp + 0x534]
inc eax
cmp eax, edx
jl 0x4737de
cmp word [esi + edx*2], 0
je 0x47380b
inc edx
lea eax, [esp + 0x290]
mov dword [esp + 0x530], edx
lea ecx, [esp + 0x530]
push eax
lea edx, [esp + 0x294]
push ecx
push edx
call fcn.0047b3a0
mov edx, dword [esp + 0x38]
add esp, 0xc
mov eax, dword [esp + 0x290]
test eax, eax
jle 0x473849
dec eax
mov dword [esp + 0x290], eax
mov esi, dword [esp + 0x294]
add esi, 2
inc ebx
cmp ebx, edx
mov dword [esp + 0x294], esi
jl 0x473770
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x5f0]
cmp word [ecx + eax*2 - 2], 0
jne 0x473877
dec eax
mov dword [esp + 0x5ec], eax
lea edx, [esp + 0x134]
lea eax, [esp + 0x5ec]
push edx
push eax
call fcn.0047b200
add esp, 8
jmp 0x47389f
mov dword [esp + 0x134], eax
lea edx, [esp + 0x134]
lea esi, [esp + 0x134]
lea ecx, [esp + 0x9ec0]
mov dword [esp + 0x28], esi
test edx, edx
mov dword [esp + 0x374], ecx
jne 0x4738dc
lea eax, [esp + 0x9fc4]
lea esi, [esp + 0x7cc]
mov dword [esp + 0x7d0], eax
mov dword [esp + 0x28], esi
mov eax, dword [esp + 0x134]
xor edi, edi
cmp eax, edi
jne 0x4738f7
mov dword [esp + 0x370], edi
mov dword [esi], edi
jmp 0x473dd2
cmp dword [esp + 0x10], 1
jne 0x473927
mov ecx, dword [esp + 0x14]
cmp word [ecx], 1
jne 0x473927
lea edx, [esp + 0x370]
lea eax, [esp + 0x134]
push edx
push eax
call fcn.0047b200
add esp, 8
mov dword [esi], edi
jmp 0x473dd2
lea ecx, [esp + 0x10]
lea edx, [esp + 0x134]
push ecx
push edx
call fcn.0047b240
add esp, 8
test eax, eax
jge 0x47395d
lea eax, [esp + 0x134]
push esi
push eax
mov dword [esp + 0x378], edi
call fcn.0047b200
add esp, 8
jmp 0x473dd2
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
mov ax, word [edx + ecx*2 - 2]
xor ecx, ecx
cmp ax, di
mov dword [esp + 0x18], eax
je 0x47397e
shr ax, 1
inc ecx
cmp ax, di
jne 0x473975
mov esi, 0x10
lea edx, [esp + 0x9ab0]
sub esi, ecx
lea ecx, [esp + 0x6394]
mov dword [esp + 0x20], esi
mov dword [esp + 0x6f8], ecx
mov dword [esp + 0x1cc], edx
jne 0x4739d3
lea eax, [esp + 0x6f4]
lea ecx, [esp + 0x134]
push eax
push ecx
call fcn.0047b200
lea edx, [esp + 0x1d0]
lea eax, [esp + 0x18]
push edx
push eax
call fcn.0047b200
add esp, 0x10
jmp 0x4739ff
lea ecx, [esp + 0x6f4]
push esi
lea edx, [esp + 0x138]
push ecx
push edx
call fcn.0047b290
lea eax, [esp + 0x1d4]
push esi
lea ecx, [esp + 0x20]
push eax
push ecx
call fcn.0047b290
add esp, 0x18
mov eax, dword [esp + 0x6f4]
mov edx, dword [esp + 0x1c8]
mov esi, dword [esp + 0x374]
sub eax, edx
mov ebx, eax
mov edi, 2
lea ecx, [eax + 1]
mov eax, edx
mov edx, dword [esp + 0x6f8]
mov dword [esp + 0x370], ecx
lea esi, [esi + ecx*2 - 2]
mov dword [esp + 0xdc], eax
lea ecx, [edx + ebx*2]
mov dword [esp + 0xe0], ecx
test eax, eax
jne 0x473a58
mov word [esi], ax
mov dword [esp + 0xdc], eax
jmp 0x473d10
cmp dword [esp + 0x1c8], 1
jne 0x473b09
cmp eax, 1
jne 0x473ab9
mov edx, dword [esp + 0xe0]
xor eax, eax
xor ecx, ecx
mov ax, word [edx]
mov edx, dword [esp + 0x1cc]
mov cx, word [edx]
cdq
idiv ecx
xor edx, edx
mov word [esi], ax
mov ecx, dword [esp + 0x1cc]
imul ax, word [ecx]
mov ecx, dword [esp + 0xe0]
sub word [ecx], ax
mov eax, dword [esp + 0xe0]
cmp word [eax], dx
setne dl
mov dword [esp + 0xdc], edx
jmp 0x473d10
mov ecx, dword [esp + 0xe0]
mov edx, dword [esp + 0x1cc]
xor ebp, ebp
mov ecx, dword [ecx]
mov bp, word [edx]
mov eax, ecx
xor edx, edx
div ebp
mov word [esi], ax
mov edx, dword [esp + 0x1cc]
imul ax, word [edx]
sub ecx, eax
mov eax, dword [esp + 0xe0]
mov word [eax], cx
mov edx, dword [esp + 0xe0]
xor ecx, ecx
cmp word [edx], cx
setne cl
mov dword [esp + 0xdc], ecx
jmp 0x473d10
lea eax, [esp + 0xdc]
lea ecx, [esp + 0xdc]
push eax
push ecx
call fcn.0047b200
lea edx, [esp + 0x1d0]
lea eax, [esp + 0xe4]
push edx
push eax
call fcn.0047b240
add esp, 0x10
test eax, eax
jge 0x473b44
mov word [esi], 0
jmp 0x473d10
mov eax, dword [esp + 0xdc]
mov ecx, dword [esp + 0x1c8]
cmp eax, ecx
jne 0x473b7c
mov ebp, dword [esp + 0x1cc]
xor edx, edx
mov dx, word [ebp + ecx*2 - 2]
mov ebp, dword [esp + 0xe0]
mov ecx, edx
xor edx, edx
mov dx, word [ebp + eax*2 - 2]
inc ecx
mov eax, edx
cdq
idiv ecx
jmp 0x473b9c
mov edx, dword [esp + 0xe0]
mov ebp, dword [esp + 0x1cc]
mov eax, dword [edx + eax*2 - 4]
xor edx, edx
mov dx, word [ebp + ecx*2 - 2]
mov ecx, edx
xor edx, edx
inc ecx
div ecx
lea edx, [esp + 0x66a8]
mov word [esi], ax
mov dword [esp + 0x404], edx
mov edx, dword [esp + 0x1c8]
mov dword [esp + 0x400], 0
mov ax, word [esi]
test edx, edx
mov dword [esp + 0x18], eax
je 0x473c9b
test ax, ax
je 0x473c9b
cmp ax, 1
jne 0x473c02
lea eax, [esp + 0x400]
lea ecx, [esp + 0x1c8]
push eax
lea edx, [esp + 0x404]
push ecx
push edx
call fcn.0047b3a0
add esp, 0xc
jmp 0x473c9b
lea ebp, [esp + 0x206c]
test edx, edx
mov dword [esp + 0x544], ebp
jl 0x473c29
lea ecx, [edx + 1]
xor eax, eax
lea edi, [esp + 0x206c]
shr ecx, 1
rep stosd dword es:[edi], eax
adc ecx, ecx
rep stosw word es:[edi], ax
xor eax, eax
test edx, edx
jle 0x473c66
mov ecx, dword [esp + 0x18]
and ecx, 0xffff
mov edi, dword [esp + 0x1cc]
xor edx, edx
mov dx, word [edi + eax*2]
mov edi, dword [ebp + eax*2]
imul edx, ecx
add edi, edx
mov dword [ebp + eax*2], edi
mov edx, dword [esp + 0x1c8]
mov ebp, dword [esp + 0x544]
inc eax
cmp eax, edx
jl 0x473c39
cmp word [ebp + edx*2], 0
je 0x473c6f
inc edx
lea eax, [esp + 0x400]
mov dword [esp + 0x540], edx
lea ecx, [esp + 0x540]
push eax
lea edx, [esp + 0x404]
push ecx
push edx
call fcn.0047b3a0
add esp, 0xc
mov edi, 2
lea eax, [esp + 0xdc]
lea ecx, [esp + 0x400]
push eax
lea edx, [esp + 0xe0]
push ecx
push edx
call fcn.0047b4a0
lea eax, [esp + 0x1d4]
lea ecx, [esp + 0xe8]
push eax
push ecx
call fcn.0047b240
add esp, 0x14
test eax, eax
jl 0x473d10
lea edx, [esp + 0xdc]
lea eax, [esp + 0x1c8]
push edx
lea ecx, [esp + 0xe0]
push eax
push ecx
call fcn.0047b4a0
inc word [esi]
lea edx, [esp + 0x1d4]
lea eax, [esp + 0xe8]
push edx
push eax
call fcn.0047b240
add esp, 0x14
test eax, eax
jge 0x473cd4
test ebx, ebx
je 0x473d7b
mov eax, dword [esp + 0xdc]
mov ebp, dword [esp + 0xe0]
sub esi, edi
inc eax
sub ebp, edi
dec ebx
test ebx, ebx
mov dword [esp + 0xdc], eax
mov dword [esp + 0xe0], ebp
jle 0x473a45
cmp eax, dword [esp + 0x1c8]
jge 0x473a45
mov word [esi], 0
mov eax, dword [esp + 0xdc]
mov ebp, dword [esp + 0xe0]
sub esi, edi
inc eax
sub ebp, edi
dec ebx
mov dword [esp + 0xdc], eax
test ebx, ebx
mov dword [esp + 0xe0], ebp
jg 0x473d3e
jmp 0x473a45
mov eax, dword [esp + 0x370]
test eax, eax
jle 0x473d9d
mov ecx, dword [esp + 0x374]
cmp word [ecx + eax*2 - 2], 0
jne 0x473d9d
dec eax
mov dword [esp + 0x370], eax
mov eax, dword [esp + 0x20]
test eax, eax
jne 0x473dbc
mov edx, dword [esp + 0x28]
lea eax, [esp + 0xdc]
push edx
push eax
call fcn.0047b200
add esp, 8
jmp 0x473dd2
mov ecx, dword [esp + 0x28]
push eax
lea edx, [esp + 0xe0]
push ecx
push edx
call fcn.0047b310
add esp, 0xc
mov edx, dword [esp + 0x134]
xor eax, eax
cmp edx, eax
je 0x473f8e
mov ecx, dword [esp + 0x2c]
cmp ecx, eax
je 0x473f8e
lea esi, [esp + 0x36c4]
mov dword [esp + 0x554], esi
lea esi, [edx + ecx]
cmp esi, eax
mov dword [esp + 0x28], esi
jle 0x473e28
mov ecx, esi
mov edx, dword [esp + 0x554]
inc eax
cmp eax, ecx
mov word [edx + eax*2 - 2], 0
jl 0x473e0a
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x134]
cmp edx, ecx
jl 0x473e39
lea esi, [esp + 0x134]
lea ebp, [esp + 0x2c]
jmp 0x473e44
lea esi, [esp + 0x2c]
lea ebp, [esp + 0x134]
lea eax, [esp + 0x36c4]
xor ebx, ebx
mov dword [esp + 0x254], eax
mov dword [esp + 0x250], ebx
mov eax, dword [ebp]
mov dword [esp + 0x20], ebp
cmp eax, ebx
jle 0x473f59
mov ecx, dword [ebp + 4]
mov eax, dword [esi]
test eax, eax
mov di, word [ecx + ebx*2]
je 0x473f29
test di, di
je 0x473f29
cmp di, 1
jne 0x473e98
lea edx, [esp + 0x250]
push edx
push esi
jmp 0x473f19
lea edx, [esp + 0x2274]
xor eax, eax
mov dword [esp + 0x650], edx
mov ecx, dword [esi]
test ecx, ecx
jl 0x473ec2
lea ecx, [esp + 0x2274]
mov word [ecx], 0
inc eax
add ecx, 2
cmp eax, dword [esi]
jle 0x473eb5
mov ecx, dword [esi]
xor eax, eax
test ecx, ecx
jle 0x473ef8
mov ecx, edi
and ecx, 0xffff
mov edi, dword [esi + 4]
xor ebp, ebp
mov bp, word [edi + eax*2]
mov edi, dword [edx + eax*2]
imul ebp, ecx
add edi, ebp
mov dword [edx + eax*2], edi
mov edx, dword [esi]
inc eax
cmp eax, edx
mov edx, dword [esp + 0x650]
jl 0x473ed2
mov ebp, dword [esp + 0x20]
mov eax, dword [esi]
cmp word [edx + eax*2], 0
je 0x473f02
inc eax
lea ecx, [esp + 0x250]
lea edx, [esp + 0x64c]
push ecx
mov dword [esp + 0x650], eax
push edx
lea eax, [esp + 0x258]
push eax
call fcn.0047b3a0
add esp, 0xc
mov eax, dword [esp + 0x250]
test eax, eax
jle 0x473f3c
dec eax
mov dword [esp + 0x250], eax
mov edx, dword [esp + 0x254]
add edx, 2
inc ebx
mov dword [esp + 0x254], edx
mov eax, dword [ebp]
cmp ebx, eax
jl 0x473e6a
mov ecx, dword [esp + 0x554]
mov eax, dword [esp + 0x28]
cmp word [ecx + eax*2 - 2], 0
jne 0x473f6d
dec eax
mov dword [esp + 0x550], eax
lea edx, [esp + 0x134]
lea eax, [esp + 0x550]
push edx
push eax
call fcn.0047b200
add esp, 8
jmp 0x473f95
mov dword [esp + 0x134], eax
lea edx, [esp + 0x2c0]
lea esi, [esp + 0x2c0]
lea ecx, [esp + 0xa1cc]
mov dword [esp + 0x28], esi
test edx, edx
mov dword [esp + 0x334], ecx
jne 0x473fd2
lea eax, [esp + 0xa2d0]
lea esi, [esp + 0x834]
mov dword [esp + 0x838], eax
mov dword [esp + 0x28], esi
mov eax, dword [esp + 0x134]
xor edi, edi
cmp eax, edi
jne 0x473fed
mov dword [esp + 0x330], edi
mov dword [esi], edi
jmp 0x4744aa
cmp dword [esp + 0x10], 1
jne 0x47400a
mov ecx, dword [esp + 0x14]
cmp word [ecx], 1
jne 0x47400a
lea edx, [esp + 0x330]
jmp 0x4732a8
lea ecx, [esp + 0x10]
lea edx, [esp + 0x134]
push ecx
push edx
call fcn.0047b240
add esp, 8
test eax, eax
jge 0x47402f
mov dword [esp + 0x330], edi
jmp 0x4732e0
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
mov ax, word [edx + ecx*2 - 2]
xor ecx, ecx
cmp ax, di
mov dword [esp + 0x18], eax
je 0x474050
shr ax, 1
inc ecx
cmp ax, di
jne 0x474047
mov esi, 0x10
lea edx, [esp + 0x5028]
sub esi, ecx
lea ecx, [esp + 0x65a0]
mov dword [esp + 0x20], esi
mov dword [esp + 0x708], ecx
mov dword [esp + 0x19c], edx
jne 0x4740a5
lea eax, [esp + 0x704]
lea ecx, [esp + 0x134]
push eax
push ecx
call fcn.0047b200
lea edx, [esp + 0x1a0]
lea eax, [esp + 0x18]
push edx
push eax
call fcn.0047b200
add esp, 0x10
jmp 0x4740d1
lea ecx, [esp + 0x704]
push esi
lea edx, [esp + 0x138]
push ecx
push edx
call fcn.0047b290
lea eax, [esp + 0x1a4]
push esi
lea ecx, [esp + 0x20]
push eax
push ecx
call fcn.0047b290
add esp, 0x18
mov eax, dword [esp + 0x704]
mov edx, dword [esp + 0x198]
mov esi, dword [esp + 0x334]
sub eax, edx
mov ebx, eax
mov edi, 2
lea ecx, [eax + 1]
mov eax, edx
mov edx, dword [esp + 0x708]
mov dword [esp + 0x330], ecx
lea esi, [esi + ecx*2 - 2]
mov dword [esp + 0xac], eax
lea ecx, [edx + ebx*2]
mov dword [esp + 0xb0], ecx
test eax, eax
jne 0x47412a
mov word [esi], ax
mov dword [esp + 0xac], eax
jmp 0x4743e8
cmp dword [esp + 0x198], 1
jne 0x4741e1
cmp eax, 1
jne 0x47418e
mov edx, dword [esp + 0xb0]
xor eax, eax
xor ecx, ecx
mov ax, word [edx]
mov edx, dword [esp + 0x19c]
mov cx, word [edx]
cdq
idiv ecx
mov word [esi], ax
mov ecx, dword [esp + 0x19c]
mov dx, word [ecx]
imul dx, ax
mov eax, dword [esp + 0xb0]
sub word [eax], dx
mov ecx, dword [esp + 0xb0]
xor eax, eax
cmp word [ecx], ax
setne al
mov dword [esp + 0xac], eax
jmp 0x4743e8
mov edx, dword [esp + 0xb0]
mov eax, dword [esp + 0x19c]
xor ebp, ebp
mov ecx, dword [edx]
mov bp, word [eax]
mov eax, ecx
xor edx, edx
div ebp
mov word [esi], ax
mov edx, dword [esp + 0x19c]
mov dx, word [edx]
imul dx, ax
mov eax, dword [esp + 0xb0]
sub ecx, edx
mov word [eax], cx
mov edx, dword [esp + 0xb0]
xor ecx, ecx
cmp word [edx], cx
setne cl
mov dword [esp + 0xac], ecx
jmp 0x4743e8
lea eax, [esp + 0xac]
lea ecx, [esp + 0xac]
push eax
push ecx
call fcn.0047b200
lea edx, [esp + 0x1a0]
lea eax, [esp + 0xb4]
push edx
push eax
call fcn.0047b240
add esp, 0x10
test eax, eax
jge 0x47421c
mov word [esi], 0
jmp 0x4743e8
mov eax, dword [esp + 0xac]
mov ecx, dword [esp + 0x198]
cmp eax, ecx
jne 0x474254
mov ebp, dword [esp + 0x19c]
xor edx, edx
mov dx, word [ebp + ecx*2 - 2]
mov ebp, dword [esp + 0xb0]
mov ecx, edx
xor edx, edx
mov dx, word [ebp + eax*2 - 2]
inc ecx
mov eax, edx
cdq
idiv ecx
jmp 0x474274
mov edx, dword [esp + 0xb0]
mov ebp, dword [esp + 0x19c]
mov eax, dword [edx + eax*2 - 4]
xor edx, edx
mov dx, word [ebp + ecx*2 - 2]
mov ecx, edx
xor edx, edx
inc ecx
div ecx
lea edx, [esp + 0x68b4]
mov word [esi], ax
mov dword [esp + 0x3cc], edx
mov edx, dword [esp + 0x198]
mov dword [esp + 0x3c8], 0
mov ax, word [esi]
test edx, edx
mov dword [esp + 0x18], eax
je 0x474373
test ax, ax
je 0x474373
cmp ax, 1
jne 0x4742da
lea eax, [esp + 0x3c8]
lea ecx, [esp + 0x198]
push eax
lea edx, [esp + 0x3cc]
push ecx
push edx
call fcn.0047b3a0
add esp, 0xc
jmp 0x474373
lea ebp, [esp + 0x4704]
test edx, edx
mov dword [esp + 0x600], ebp
jl 0x474301
lea ecx, [edx + 1]
xor eax, eax
lea edi, [esp + 0x4704]
shr ecx, 1
rep stosd dword es:[edi], eax
adc ecx, ecx
rep stosw word es:[edi], ax
xor eax, eax
test edx, edx
jle 0x47433e
mov ecx, dword [esp + 0x18]
and ecx, 0xffff
mov edi, dword [esp + 0x19c]
xor edx, edx
mov dx, word [edi + eax*2]
mov edi, dword [ebp + eax*2]
imul edx, ecx
add edi, edx
mov dword [ebp + eax*2], edi
mov edx, dword [esp + 0x198]
mov ebp, dword [esp + 0x600]
inc eax
cmp eax, edx
jl 0x474311
cmp word [ebp + edx*2], 0
je 0x474347
inc edx
lea eax, [esp + 0x3c8]
mov dword [esp + 0x5fc], edx
lea ecx, [esp + 0x5fc]
push eax
lea edx, [esp + 0x3cc]
push ecx
push edx
call fcn.0047b3a0
add esp, 0xc
mov edi, 2
lea eax, [esp + 0xac]
lea ecx, [esp + 0x3c8]
push eax
lea edx, [esp + 0xb0]
push ecx
push edx
call fcn.0047b4a0
lea eax, [esp + 0x1a4]
lea ecx, [esp + 0xb8]
push eax
push ecx
call fcn.0047b240
add esp, 0x14
test eax, eax
jl 0x4743e8
lea edx, [esp + 0xac]
lea eax, [esp + 0x198]
push edx
lea ecx, [esp + 0xb0]
push eax
push ecx
call fcn.0047b4a0
inc word [esi]
lea edx, [esp + 0x1a4]
lea eax, [esp + 0xb8]
push edx
push eax
call fcn.0047b240
add esp, 0x14
test eax, eax
jge 0x4743ac
test ebx, ebx
je 0x474453
mov eax, dword [esp + 0xac]
mov ebp, dword [esp + 0xb0]
sub esi, edi
inc eax
sub ebp, edi
dec ebx
test ebx, ebx
mov dword [esp + 0xac], eax
mov dword [esp + 0xb0], ebp
jle 0x474117
cmp eax, dword [esp + 0x198]
jge 0x474117
mov word [esi], 0
mov eax, dword [esp + 0xac]
mov ebp, dword [esp + 0xb0]
sub esi, edi
inc eax
sub ebp, edi
dec ebx
mov dword [esp + 0xac], eax
test ebx, ebx
mov dword [esp + 0xb0], ebp
jg 0x474416
jmp 0x474117
mov eax, dword [esp + 0x330]
test eax, eax
jle 0x474475
mov ecx, dword [esp + 0x334]
cmp word [ecx + eax*2 - 2], 0
jne 0x474475
dec eax
mov dword [esp + 0x330], eax
mov eax, dword [esp + 0x20]
test eax, eax
jne 0x474494
mov edx, dword [esp + 0x28]
lea eax, [esp + 0xac]
push edx
push eax
call fcn.0047b200
add esp, 8
jmp 0x4744aa
mov ecx, dword [esp + 0x28]
push eax
push ecx
lea edx, [esp + 0xb4]
push edx
call fcn.0047b310
add esp, 0xc
mov al, byte [esp + 0x3c4]
test al, al
je 0x474b85
mov ecx, dword [esp + 0x3c]
test ecx, ecx
je 0x47466a
mov eax, dword [esp + 0x1c]
cmp dword [eax], 0
je 0x47466a
lea edx, [esp + 0x247c]
mov dword [esp + 0x680], edx
mov edi, dword [eax]
mov edx, ecx
xor eax, eax
add edx, edi
test edx, edx
mov dword [esp + 0x28], edx
jle 0x474509
mov ecx, edx
mov edx, dword [esp + 0x680]
inc eax
cmp eax, ecx
mov word [edx + eax*2 - 2], 0
jl 0x4744f2
mov ecx, dword [esp + 0x3c]
mov eax, dword [esp + 0x1c]
cmp ecx, dword [eax]
jl 0x474519
lea esi, [esp + 0x3c]
mov ebp, eax
jmp 0x47451f
mov esi, eax
lea ebp, [esp + 0x3c]
lea eax, [esp + 0x247c]
mov dword [esp + 0x280], 0
mov dword [esp + 0x284], eax
mov eax, dword [ebp]
xor ebx, ebx
mov dword [esp + 0x20], ebp
test eax, eax
jle 0x474638
mov ecx, dword [ebp + 4]
mov eax, dword [esi]
test eax, eax
mov di, word [ecx + ebx*2]
je 0x474608
test di, di
je 0x474608
cmp di, 1
jne 0x474577
lea edx, [esp + 0x280]
push edx
push esi
jmp 0x4745f8
lea edx, [esp + 0x38cc]
xor eax, eax
mov dword [esp + 0x564], edx
mov ecx, dword [esi]
test ecx, ecx
jl 0x4745a1
lea ecx, [esp + 0x38cc]
mov word [ecx], 0
inc eax
add ecx, 2
cmp eax, dword [esi]
jle 0x474594
mov ecx, dword [esi]
xor eax, eax
test ecx, ecx
jle 0x4745d7
mov ecx, edi
and ecx, 0xffff
mov edi, dword [esi + 4]
xor ebp, ebp
mov bp, word [edi + eax*2]
mov edi, dword [edx + eax*2]
imul ebp, ecx
add edi, ebp
mov dword [edx + eax*2], edi
mov edx, dword [esi]
inc eax
cmp eax, edx
mov edx, dword [esp + 0x564]
jl 0x4745b1
mov ebp, dword [esp + 0x20]
mov eax, dword [esi]
cmp word [edx + eax*2], 0
je 0x4745e1
inc eax
lea ecx, [esp + 0x280]
lea edx, [esp + 0x560]
push ecx
mov dword [esp + 0x564], eax
push edx
lea eax, [esp + 0x288]
push eax
call fcn.0047b3a0
add esp, 0xc
mov eax, dword [esp + 0x280]
test eax, eax
jle 0x47461b
dec eax
mov dword [esp + 0x280], eax
mov edx, dword [esp + 0x284]
add edx, 2
inc ebx
mov dword [esp + 0x284], edx
mov eax, dword [ebp]
cmp ebx, eax
jl 0x474549
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x680]
cmp word [ecx + eax*2 - 2], 0
jne 0x47464c
dec eax
mov dword [esp + 0x67c], eax
lea edx, [esp + 0x3c]
lea eax, [esp + 0x67c]
push edx
push eax
call fcn.0047b200
add esp, 8
jmp 0x474672
mov dword [esp + 0x3c], 0
lea edx, [esp + 0x3c]
lea esi, [esp + 0x3c]
lea ecx, [esp + 0xa4d8]
mov dword [esp + 0x28], esi
test edx, edx
mov dword [esp + 0x2cc], ecx
jne 0x4746a9
lea eax, [esp + 0xa5dc]
lea esi, [esp + 0x7dc]
mov dword [esp + 0x7e0], eax
mov dword [esp + 0x28], esi
mov eax, dword [esp + 0x3c]
xor edi, edi
cmp eax, edi
jne 0x4746c1
mov dword [esp + 0x2c8], edi
mov dword [esi], edi
jmp 0x474b97
cmp dword [esp + 0x10], 1
jne 0x4746ee
mov ecx, dword [esp + 0x14]
cmp word [ecx], 1
jne 0x4746ee
lea edx, [esp + 0x2c8]
lea eax, [esp + 0x3c]
push edx
push eax
call fcn.0047b200
add esp, 8
mov dword [esi], edi
jmp 0x474b97
lea ecx, [esp + 0x10]
lea edx, [esp + 0x3c]
push ecx
push edx
call fcn.0047b240
add esp, 8
test eax, eax
jge 0x474716
lea eax, [esp + 0x3c]
push esi
mov dword [esp + 0x2cc], edi
push eax
jmp 0x474b8f
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
mov ax, word [edx + ecx*2 - 2]
xor ecx, ecx
cmp ax, di
mov dword [esp + 0x18], eax
je 0x474737
shr ax, 1
inc ecx
cmp ax, di
jne 0x47472e
mov esi, 0x10
lea edx, [esp + 0x9dbc]
sub esi, ecx
lea ecx, [esp + 0x67ac]
mov dword [esp + 0x20], esi
mov dword [esp + 0x6b0], ecx
mov dword [esp + 0x1ec], edx
jne 0x474789
lea eax, [esp + 0x6ac]
lea ecx, [esp + 0x3c]
push eax
push ecx
call fcn.0047b200
lea edx, [esp + 0x1f0]
lea eax, [esp + 0x18]
push edx
push eax
call fcn.0047b200
add esp, 0x10
jmp 0x4747b2
lea ecx, [esp + 0x6ac]
push esi
lea edx, [esp + 0x40]
push ecx
push edx
call fcn.0047b290
lea eax, [esp + 0x1f4]
push esi
lea ecx, [esp + 0x20]
push eax
push ecx
call fcn.0047b290
add esp, 0x18
mov eax, dword [esp + 0x6ac]
mov edx, dword [esp + 0x1e8]
mov esi, dword [esp + 0x2cc]
sub eax, edx
mov ebx, eax
mov edi, 2
lea ecx, [eax + 1]
mov eax, edx
mov edx, dword [esp + 0x6b0]
mov dword [esp + 0x2c8], ecx
lea esi, [esi + ecx*2 - 2]
mov dword [esp + 0xfc], eax
lea ecx, [edx + ebx*2]
mov dword [esp + 0x100], ecx
test eax, eax
jne 0x47480b
mov word [esi], ax
mov dword [esp + 0xfc], eax
jmp 0x474ac9
cmp dword [esp + 0x1e8], 1
jne 0x4748c2
cmp eax, 1
jne 0x47486f
mov edx, dword [esp + 0x100]
xor eax, eax
xor ecx, ecx
mov ax, word [edx]
mov edx, dword [esp + 0x1ec]
mov cx, word [edx]
cdq
idiv ecx
mov word [esi], ax
mov ecx, dword [esp + 0x1ec]
mov dx, word [ecx]
imul dx, ax
mov eax, dword [esp + 0x100]
sub word [eax], dx
mov ecx, dword [esp + 0x100]
xor eax, eax
cmp word [ecx], ax
setne al
mov dword [esp + 0xfc], eax
jmp 0x474ac9
mov edx, dword [esp + 0x100]
mov eax, dword [esp + 0x1ec]
xor ebp, ebp
mov ecx, dword [edx]
mov bp, word [eax]
mov eax, ecx
xor edx, edx
div ebp
mov word [esi], ax
mov edx, dword [esp + 0x1ec]
mov dx, word [edx]
imul dx, ax
mov eax, dword [esp + 0x100]
sub ecx, edx
mov word [eax], cx
mov edx, dword [esp + 0x100]
xor ecx, ecx
cmp word [edx], cx
setne cl
mov dword [esp + 0xfc], ecx
jmp 0x474ac9
lea eax, [esp + 0xfc]
lea ecx, [esp + 0xfc]
push eax
push ecx
call fcn.0047b200
lea edx, [esp + 0x1f0]
lea eax, [esp + 0x104]
push edx
push eax
call fcn.0047b240
add esp, 0x10
test eax, eax
jge 0x4748fd
mov word [esi], 0
jmp 0x474ac9
mov eax, dword [esp + 0xfc]
mov ecx, dword [esp + 0x1e8]
cmp eax, ecx
jne 0x474935
mov ebp, dword [esp + 0x1ec]
xor edx, edx
mov dx, word [ebp + ecx*2 - 2]
mov ebp, dword [esp + 0x100]
mov ecx, edx
xor edx, edx
mov dx, word [ebp + eax*2 - 2]
inc ecx
mov eax, edx
cdq
idiv ecx
jmp 0x474955
mov edx, dword [esp + 0x100]
mov ebp, dword [esp + 0x1ec]
mov eax, dword [edx + eax*2 - 4]
xor edx, edx
mov dx, word [ebp + ecx*2 - 2]
mov ecx, edx
xor edx, edx
inc ecx
div ecx
lea edx, [esp + 0x6ac0]
mov word [esi], ax
mov dword [esp + 0x414], edx
mov edx, dword [esp + 0x1e8]
mov dword [esp + 0x410], 0
mov ax, word [esi]
test edx, edx
mov dword [esp + 0x18], eax
je 0x474a54
test ax, ax
je 0x474a54
cmp ax, 1
jne 0x4749bb
lea eax, [esp + 0x410]
lea ecx, [esp + 0x1e8]
push eax
lea edx, [esp + 0x414]
push ecx
push edx
call fcn.0047b3a0
add esp, 0xc
jmp 0x474a54
lea ebp, [esp + 0x2684]
test edx, edx
mov dword [esp + 0x574], ebp
jl 0x4749e2
lea ecx, [edx + 1]
xor eax, eax
lea edi, [esp + 0x2684]
shr ecx, 1
rep stosd dword es:[edi], eax
adc ecx, ecx
rep stosw word es:[edi], ax
xor eax, eax
test edx, edx
jle 0x474a1f
mov ecx, dword [esp + 0x18]
and ecx, 0xffff
mov edi, dword [esp + 0x1ec]
xor edx, edx
mov dx, word [edi + eax*2]
mov edi, dword [ebp + eax*2]
imul edx, ecx
add edi, edx
mov dword [ebp + eax*2], edi
mov edx, dword [esp + 0x1e8]
mov ebp, dword [esp + 0x574]
inc eax
cmp eax, edx
jl 0x4749f2
cmp word [ebp + edx*2], 0
je 0x474a28
inc edx
lea eax, [esp + 0x410]
mov dword [esp + 0x570], edx
lea ecx, [esp + 0x570]
push eax
lea edx, [esp + 0x414]
push ecx
push edx
call fcn.0047b3a0
add esp, 0xc
mov edi, 2
lea eax, [esp + 0xfc]
lea ecx, [esp + 0x410]
push eax
lea edx, [esp + 0x100]
push ecx
push edx
call fcn.0047b4a0
lea eax, [esp + 0x1f4]
lea ecx, [esp + 0x108]
push eax
push ecx
call fcn.0047b240
add esp, 0x14
test eax, eax
jl 0x474ac9
lea edx, [esp + 0xfc]
lea eax, [esp + 0x1e8]
push edx
lea ecx, [esp + 0x100]
push eax
push ecx
call fcn.0047b4a0
inc word [esi]
lea edx, [esp + 0x1f4]
lea eax, [esp + 0x108]
push edx
push eax
call fcn.0047b240
add esp, 0x14
test eax, eax
jge 0x474a8d
test ebx, ebx
je 0x474b34
mov eax, dword [esp + 0xfc]
mov ebp, dword [esp + 0x100]
sub esi, edi
inc eax
sub ebp, edi
dec ebx
test ebx, ebx
mov dword [esp + 0xfc], eax
mov dword [esp + 0x100], ebp
jle 0x4747f8
cmp eax, dword [esp + 0x1e8]
jge 0x4747f8
mov word [esi], 0
mov eax, dword [esp + 0xfc]
mov ebp, dword [esp + 0x100]
sub esi, edi
inc eax
sub ebp, edi
dec ebx
mov dword [esp + 0xfc], eax
test ebx, ebx
mov dword [esp + 0x100], ebp
jg 0x474af7
jmp 0x4747f8
mov eax, dword [esp + 0x2c8]
test eax, eax
jle 0x474b56
mov ecx, dword [esp + 0x2cc]
cmp word [ecx + eax*2 - 2], 0
jne 0x474b56
dec eax
mov dword [esp + 0x2c8], eax
mov eax, dword [esp + 0x20]
test eax, eax
jne 0x474b6d
mov edx, dword [esp + 0x28]
lea eax, [esp + 0xfc]
push edx
push eax
jmp 0x474b8f
mov ecx, dword [esp + 0x28]
push eax
lea edx, [esp + 0x100]
push ecx
push edx
call fcn.0047b310
add esp, 0xc
jmp 0x474b97
mov ecx, dword [esp + 0x1c]
lea eax, [esp + 0x3c]
push eax
push ecx
call fcn.0047b200
add esp, 8
mov edx, dword [esp + 0x24]
lea eax, [esp + 0x3c]
push edx
push eax
call fcn.0047b200
mov eax, dword [esp + 0x2c]
add esp, 8
lea ecx, [esp + 0x44]
push ecx
push eax
call fcn.0047b200
add esp, 8
mov dword [esp + 0x20], 4
mov edx, dword [esp + 0x44]
xor eax, eax
cmp edx, eax
je 0x474d49
lea ecx, [esp + 0x42f4]
mov dword [esp + 0x584], ecx
lea ecx, [edx + edx]
cmp ecx, eax
mov dword [esp + 0x24], ecx
jle 0x474c01
mov edx, dword [esp + 0x584]
inc eax
cmp eax, ecx
mov word [edx + eax*2 - 2], 0
jl 0x474bea
mov edx, dword [esp + 0x44]
lea eax, [esp + 0x42f4]
xor ebx, ebx
test edx, edx
mov dword [esp + 0x214], eax
mov dword [esp + 0x210], 0
jle 0x474d17
mov ecx, dword [esp + 0x48]
test edx, edx
mov bp, word [ecx + ebx*2]
je 0x474cea
test bp, bp
je 0x474cea
cmp bp, 1
jne 0x474c5d
lea edx, [esp + 0x210]
lea eax, [esp + 0x44]
push edx
lea ecx, [esp + 0x214]
push eax
push ecx
jmp 0x474cde
lea esi, [esp + 0x288c]
test edx, edx
mov dword [esp + 0x610], esi
jl 0x474c84
lea ecx, [edx + 1]
xor eax, eax
lea edi, [esp + 0x288c]
shr ecx, 1
rep stosd dword es:[edi], eax
adc ecx, ecx
rep stosw word es:[edi], ax
xor eax, eax
test edx, edx
jle 0x474cb7
mov ecx, ebp
and ecx, 0xffff
mov edi, dword [esp + 0x48]
xor edx, edx
mov ebp, dword [esi + eax*2]
mov dx, word [edi + eax*2]
imul edx, ecx
add ebp, edx
mov dword [esi + eax*2], ebp
mov edx, dword [esp + 0x44]
mov esi, dword [esp + 0x610]
inc eax
cmp eax, edx
jl 0x474c92
cmp word [esi + edx*2], 0
je 0x474cbf
inc edx
lea eax, [esp + 0x210]
mov dword [esp + 0x60c], edx
lea ecx, [esp + 0x60c]
push eax
lea edx, [esp + 0x214]
push ecx
push edx
call fcn.0047b3a0
mov edx, dword [esp + 0x50]
add esp, 0xc
mov eax, dword [esp + 0x210]
test eax, eax
jle 0x474cfd
dec eax
mov dword [esp + 0x210], eax
mov esi, dword [esp + 0x214]
add esi, 2
inc ebx
cmp ebx, edx
mov dword [esp + 0x214], esi
jl 0x474c24
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x584]
cmp word [ecx + eax*2 - 2], 0
jne 0x474d2b
dec eax
mov dword [esp + 0x580], eax
lea edx, [esp + 0x44]
lea eax, [esp + 0x580]
push edx
push eax
call fcn.0047b200
add esp, 8
jmp 0x474d4d
mov dword [esp + 0x44], eax
lea edx, [esp + 0x44]
lea esi, [esp + 0x44]
lea ecx, [esp + 0xa7e4]
mov dword [esp + 0x1c], esi
test edx, edx
mov dword [esp + 0x2dc], ecx
jne 0x474d84
lea eax, [esp + 0xa8e8]
lea esi, [esp + 0x82c]
mov dword [esp + 0x830], eax
mov dword [esp + 0x1c], esi
mov eax, dword [esp + 0x44]
xor edi, edi
cmp eax, edi
jne 0x474d9c
mov dword [esp + 0x2d8], edi
mov dword [esi], edi
jmp 0x475268
cmp dword [esp + 0x10], 1
jne 0x474dc9
mov ecx, dword [esp + 0x14]
cmp word [ecx], 1
jne 0x474dc9
lea edx, [esp + 0x2d8]
lea eax, [esp + 0x44]
push edx
push eax
call fcn.0047b200
add esp, 8
mov dword [esi], edi
jmp 0x475268
lea ecx, [esp + 0x10]
lea edx, [esp + 0x44]
push ecx
push edx
call fcn.0047b240
add esp, 8
test eax, eax
jge 0x474df9
lea eax, [esp + 0x44]
push esi
push eax
mov dword [esp + 0x2e0], edi
call fcn.0047b200
add esp, 8
jmp 0x475268
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
mov ax, word [edx + ecx*2 - 2]
xor ecx, ecx
cmp ax, di
mov dword [esp + 0x18], eax
je 0x474e1a
shr ax, 1
inc ecx
cmp ax, di
jne 0x474e11
mov esi, 0x10
lea edx, [esp + 0xbf40]
sub esi, ecx
lea ecx, [esp + 0x69b8]
mov dword [esp + 0x24], esi
mov dword [esp + 0x720], ecx
mov dword [esp + 0x1ac], edx
jne 0x474e6c
lea eax, [esp + 0x71c]
lea ecx, [esp + 0x44]
push eax
push ecx
call fcn.0047b200
lea edx, [esp + 0x1b0]
lea eax, [esp + 0x18]
push edx
push eax
call fcn.0047b200
add esp, 0x10
jmp 0x474e95
lea ecx, [esp + 0x71c]
push esi
lea edx, [esp + 0x48]
push ecx
push edx
call fcn.0047b290
lea eax, [esp + 0x1b4]
push esi
lea ecx, [esp + 0x20]
push eax
push ecx
call fcn.0047b290
add esp, 0x18
mov eax, dword [esp + 0x71c]
mov edx, dword [esp + 0x1a8]
mov esi, dword [esp + 0x2dc]
sub eax, edx
mov ebx, eax
mov edi, 2
lea ecx, [eax + 1]
mov eax, edx
mov edx, dword [esp + 0x720]
mov dword [esp + 0x2d8], ecx
lea esi, [esi + ecx*2 - 2]
mov dword [esp + 0xbc], eax
lea ecx, [edx + ebx*2]
mov dword [esp + 0xc0], ecx
test eax, eax
jne 0x474eee
mov word [esi], ax
mov dword [esp + 0xbc], eax
jmp 0x4751a6
cmp dword [esp + 0x1a8], 1
jne 0x474f9f
cmp eax, 1
jne 0x474f4f
mov edx, dword [esp + 0xc0]
xor eax, eax
xor ecx, ecx
mov ax, word [edx]
mov edx, dword [esp + 0x1ac]
mov cx, word [edx]
cdq
idiv ecx
xor edx, edx
mov word [esi], ax
mov ecx, dword [esp + 0x1ac]
imul ax, word [ecx]
mov ecx, dword [esp + 0xc0]
sub word [ecx], ax
mov eax, dword [esp + 0xc0]
cmp word [eax], dx
setne dl
mov dword [esp + 0xbc], edx
jmp 0x4751a6
mov ecx, dword [esp + 0xc0]
mov edx, dword [esp + 0x1ac]
xor ebp, ebp
mov ecx, dword [ecx]
mov bp, word [edx]
mov eax, ecx
xor edx, edx
div ebp
mov word [esi], ax
mov edx, dword [esp + 0x1ac]
imul ax, word [edx]
sub ecx, eax
mov eax, dword [esp + 0xc0]
mov word [eax], cx
mov edx, dword [esp + 0xc0]
xor ecx, ecx
cmp word [edx], cx
setne cl
mov dword [esp + 0xbc], ecx
jmp 0x4751a6
lea eax, [esp + 0xbc]
lea ecx, [esp + 0xbc]
push eax
push ecx
call fcn.0047b200
lea edx, [esp + 0x1b0]
lea eax, [esp + 0xc4]
push edx
push eax
call fcn.0047b240
add esp, 0x10
test eax, eax
jge 0x474fda
mov word [esi], 0
jmp 0x4751a6
mov eax, dword [esp + 0xbc]
mov ecx, dword [esp + 0x1a8]
cmp eax, ecx
jne 0x475012
mov ebp, dword [esp + 0x1ac]
xor edx, edx
mov dx, word [ebp + ecx*2 - 2]
mov ebp, dword [esp + 0xc0]
mov ecx, edx
xor edx, edx
mov dx, word [ebp + eax*2 - 2]
inc ecx
mov eax, edx
cdq
idiv ecx
jmp 0x475032
mov edx, dword [esp + 0xc0]
mov ebp, dword [esp + 0x1ac]
mov eax, dword [edx + eax*2 - 4]
xor edx, edx
mov dx, word [ebp + ecx*2 - 2]
mov ecx, edx
xor edx, edx
inc ecx
div ecx
lea edx, [esp + 0x6ccc]
mov word [esi], ax
mov dword [esp + 0x454], edx
mov edx, dword [esp + 0x1a8]
mov dword [esp + 0x450], 0
mov ax, word [esi]
test edx, edx
mov dword [esp + 0x18], eax
je 0x475131
test ax, ax
je 0x475131
cmp ax, 1
jne 0x475098
lea eax, [esp + 0x450]
lea ecx, [esp + 0x1a8]
push eax
lea edx, [esp + 0x454]
push ecx
push edx
call fcn.0047b3a0
add esp, 0xc
jmp 0x475131
lea ebp, [esp + 0x3ad4]
test edx, edx
mov dword [esp + 0x660], ebp
jl 0x4750bf
lea ecx, [edx + 1]
xor eax, eax
lea edi, [esp + 0x3ad4]
shr ecx, 1
rep stosd dword es:[edi], eax
adc ecx, ecx
rep stosw word es:[edi], ax
xor eax, eax
test edx, edx
jle 0x4750fc
mov ecx, dword [esp + 0x18]
and ecx, 0xffff
mov edi, dword [esp + 0x1ac]
xor edx, edx
mov dx, word [edi + eax*2]
mov edi, dword [ebp + eax*2]
imul edx, ecx
add edi, edx
mov dword [ebp + eax*2], edi
mov edx, dword [esp + 0x1a8]
mov ebp, dword [esp + 0x660]
inc eax
cmp eax, edx
jl 0x4750cf
cmp word [ebp + edx*2], 0
je 0x475105
inc edx
lea eax, [esp + 0x450]
mov dword [esp + 0x65c], edx
lea ecx, [esp + 0x65c]
push eax
lea edx, [esp + 0x454]
push ecx
push edx
call fcn.0047b3a0
add esp, 0xc
mov edi, 2
lea eax, [esp + 0xbc]
lea ecx, [esp + 0x450]
push eax
lea edx, [esp + 0xc0]
push ecx
push edx
call fcn.0047b4a0
lea eax, [esp + 0x1b4]
lea ecx, [esp + 0xc8]
push eax
push ecx
call fcn.0047b240
add esp, 0x14
test eax, eax
jl 0x4751a6
lea edx, [esp + 0xbc]
lea eax, [esp + 0x1a8]
push edx
lea ecx, [esp + 0xc0]
push eax
push ecx
call fcn.0047b4a0
inc word [esi]
lea edx, [esp + 0x1b4]
lea eax, [esp + 0xc8]
push edx
push eax
call fcn.0047b240
add esp, 0x14
test eax, eax
jge 0x47516a
test ebx, ebx
je 0x475211
mov eax, dword [esp + 0xbc]
mov ebp, dword [esp + 0xc0]
sub esi, edi
inc eax
sub ebp, edi
dec ebx
test ebx, ebx
mov dword [esp + 0xbc], eax
mov dword [esp + 0xc0], ebp
jle 0x474edb
cmp eax, dword [esp + 0x1a8]
jge 0x474edb
mov word [esi], 0
mov eax, dword [esp + 0xbc]
mov ebp, dword [esp + 0xc0]
sub esi, edi
inc eax
sub ebp, edi
dec ebx
mov dword [esp + 0xbc], eax
test ebx, ebx
mov dword [esp + 0xc0], ebp
jg 0x4751d4
jmp 0x474edb
mov eax, dword [esp + 0x2d8]
test eax, eax
jle 0x475233
mov ecx, dword [esp + 0x2dc]
cmp word [ecx + eax*2 - 2], 0
jne 0x475233
dec eax
mov dword [esp + 0x2d8], eax
mov eax, dword [esp + 0x24]
test eax, eax
jne 0x475252
mov edx, dword [esp + 0x1c]
lea eax, [esp + 0xbc]
push edx
push eax
call fcn.0047b200
add esp, 8
jmp 0x475268
mov ecx, dword [esp + 0x1c]
push eax
lea edx, [esp + 0xc0]
push ecx
push edx
call fcn.0047b310
add esp, 0xc
mov eax, dword [esp + 0x20]
dec eax
mov dword [esp + 0x20], eax
jne 0x474bc3
mov cl, byte [esp + 0x5b0]
test cl, cl
je 0x479a7b
mov eax, dword [esp + 0x5b0]
and eax, 0xff
mov edx, dword [esp + eax*8 + 0x890]
lea eax, [esp + eax*8 + 0x890]
test edx, edx
mov dword [esp + 0x20], eax
jne 0x47939e
mov al, cl
lea edx, [esp + 0xa0c8]
shr al, 2
and cl, 3
mov dword [esp + 0x50], edx
test al, al
mov byte [esp + 0x3c0], al
mov byte [esp + 0x3b0], cl
je 0x4772b6
mov eax, dword [esp + 0x3c0]
and eax, 0xff
mov ecx, dword [esp + eax*8 + 0x2a8]
lea eax, [esp + eax*8 + 0x2a8]
test ecx, ecx
mov dword [esp + 0x28], eax
jne 0x476be2
mov al, byte [esp + 0x3c0]
cmp al, 1
jne 0x4757cd
lea edx, [esp + 0x2b0]
lea esi, [esp + 0x2b0]
lea ecx, [esp + 0xaaf0]
mov dword [esp + 0x1c], esi
test edx, edx
mov dword [esp + 0x2ec], ecx
jne 0x475347
lea eax, [esp + 0xabf4]
lea esi, [esp + 0x7ec]
mov dword [esp + 0x7f0], eax
mov dword [esp + 0x1c], esi
mov eax, dword [esp + 0x2c]
xor edi, edi
cmp eax, edi
jne 0x47535f
mov dword [esp + 0x2e8], edi
mov dword [esi], edi
jmp 0x476be2
cmp dword [esp + 0x10], 1
jne 0x47538c
mov ecx, dword [esp + 0x14]
cmp word [ecx], 1
jne 0x47538c
lea edx, [esp + 0x2e8]
lea eax, [esp + 0x2c]
push edx
push eax
call fcn.0047b200
add esp, 8
mov dword [esi], edi
jmp 0x476be2
lea ecx, [esp + 0x10]
lea edx, [esp + 0x2c]
push ecx
push edx
call fcn.0047b240
add esp, 8
test eax, eax
jge 0x4753bc
lea eax, [esp + 0x2c]
push esi
push eax
mov dword [esp + 0x2f0], edi
call fcn.0047b200
add esp, 8
jmp 0x476be2
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
mov ax, word [edx + ecx*2 - 2]
xor ecx, ecx
cmp ax, di
mov dword [esp + 0x18], eax
je 0x4753dd
shr ax, 1
inc ecx
cmp ax, di
jne 0x4753d4
mov esi, 0x10
lea edx, [esp + 0x6ed8]
sub esi, ecx
lea ecx, [esp + 0x6bc4]
mov dword [esp + 0x24], esi
mov dword [esp + 0x710], ecx
mov dword [esp + 0x1dc], edx
jne 0x47542f
lea eax, [esp + 0x70c]
lea ecx, [esp + 0x2c]
push eax
push ecx
call fcn.0047b200
lea edx, [esp + 0x1e0]
lea eax, [esp + 0x18]
push edx
push eax
call fcn.0047b200
add esp, 0x10
jmp 0x475458
lea ecx, [esp + 0x70c]
push esi
lea edx, [esp + 0x30]
push ecx
push edx
call fcn.0047b290
lea eax, [esp + 0x1e4]
push esi
lea ecx, [esp + 0x20]
push eax
push ecx
call fcn.0047b290
add esp, 0x18
mov eax, dword [esp + 0x70c]
mov edx, dword [esp + 0x1d8]
mov esi, dword [esp + 0x2ec]
sub eax, edx
mov ebx, eax
mov edi, 2
lea ecx, [eax + 1]
mov eax, edx
mov edx, dword [esp + 0x710]
mov dword [esp + 0x2e8], ecx
lea esi, [esi + ecx*2 - 2]
mov dword [esp + 0x6c], eax
lea ecx, [edx + ebx*2]
mov dword [esp + 0x70], ecx
test eax, eax
jne 0x4754a8
mov word [esi], ax
mov dword [esp + 0x6c], eax
jmp 0x47572a
cmp dword [esp + 0x1d8], 1
jne 0x475547
cmp eax, 1
jne 0x475500
mov edx, dword [esp + 0x70]
xor eax, eax
xor ecx, ecx
mov ax, word [edx]
mov edx, dword [esp + 0x1dc]
mov cx, word [edx]
cdq
idiv ecx
mov word [esi], ax
mov ecx, dword [esp + 0x1dc]
mov dx, word [ecx]
imul dx, ax
mov eax, dword [esp + 0x70]
sub word [eax], dx
mov ecx, dword [esp + 0x70]
xor eax, eax
cmp word [ecx], ax
setne al
mov dword [esp + 0x6c], eax
jmp 0x47572a
mov edx, dword [esp + 0x70]
mov eax, dword [esp + 0x1dc]
xor ebp, ebp
mov ecx, dword [edx]
mov bp, word [eax]
mov eax, ecx
xor edx, edx
div ebp
mov word [esi], ax
mov edx, dword [esp + 0x1dc]
mov dx, word [edx]
imul dx, ax
mov eax, dword [esp + 0x70]
sub ecx, edx
mov word [eax], cx
mov edx, dword [esp + 0x70]
xor ecx, ecx
cmp word [edx], cx
setne cl
mov dword [esp + 0x6c], ecx
jmp 0x47572a
lea eax, [esp + 0x6c]
lea ecx, [esp + 0x6c]
push eax
push ecx
call fcn.0047b200
lea edx, [esp + 0x1e0]
lea eax, [esp + 0x74]
push edx
push eax
call fcn.0047b240
add esp, 0x10
test eax, eax
jge 0x475579
mov word [esi], 0
jmp 0x47572a
mov eax, dword [esp + 0x6c]
mov ecx, dword [esp + 0x1d8]
cmp eax, ecx
jne 0x4755ab
mov ebp, dword [esp + 0x1dc]
xor edx, edx
mov dx, word [ebp + ecx*2 - 2]
mov ebp, dword [esp + 0x70]
mov ecx, edx
xor edx, edx
mov dx, word [ebp + eax*2 - 2]
inc ecx
mov eax, edx
cdq
idiv ecx
jmp 0x4755c8
mov edx, dword [esp + 0x70]
mov ebp, dword [esp + 0x1dc]
mov eax, dword [edx + eax*2 - 4]
xor edx, edx
mov dx, word [ebp + ecx*2 - 2]
mov ecx, edx
xor edx, edx
inc ecx
div ecx
lea edx, [esp + 0xd598]
mov word [esi], ax
mov dword [esp + 0x424], edx
mov edx, dword [esp + 0x1d8]
mov dword [esp + 0x420], 0
mov ax, word [esi]
test edx, edx
mov dword [esp + 0x18], eax
je 0x4756c7
test ax, ax
je 0x4756c7
cmp ax, 1
jne 0x47562e
lea eax, [esp + 0x420]
lea ecx, [esp + 0x1d8]
push eax
lea edx, [esp + 0x424]
push ecx
push edx
call fcn.0047b3a0
add esp, 0xc
jmp 0x4756c7
lea ebp, [esp + 0x2a94]
test edx, edx
mov dword [esp + 0x594], ebp
jl 0x475655
lea ecx, [edx + 1]
xor eax, eax
lea edi, [esp + 0x2a94]
shr ecx, 1
rep stosd dword es:[edi], eax
adc ecx, ecx
rep stosw word es:[edi], ax
xor eax, eax
test edx, edx
jle 0x475692
mov ecx, dword [esp + 0x18]
and ecx, 0xffff
mov edi, dword [esp + 0x1dc]
xor edx, edx
mov dx, word [edi + eax*2]
mov edi, dword [ebp + eax*2]
imul edx, ecx
add edi, edx
mov dword [ebp + eax*2], edi
mov edx, dword [esp + 0x1d8]
mov ebp, dword [esp + 0x594]
inc eax
cmp eax, edx
jl 0x475665
cmp word [ebp + edx*2], 0
je 0x47569b
inc edx
lea eax, [esp + 0x420]
mov dword [esp + 0x590], edx
lea ecx, [esp + 0x590]
push eax
lea edx, [esp + 0x424]
push ecx
push edx
call fcn.0047b3a0
add esp, 0xc
mov edi, 2
lea eax, [esp + 0x6c]
lea ecx, [esp + 0x420]
push eax
lea edx, [esp + 0x70]
push ecx
push edx
call fcn.0047b4a0
lea eax, [esp + 0x1e4]
lea ecx, [esp + 0x78]
push eax
push ecx
call fcn.0047b240
add esp, 0x14
test eax, eax
jl 0x47572a
lea edx, [esp + 0x6c]
lea eax, [esp + 0x1d8]
push edx
lea ecx, [esp + 0x70]
push eax
push ecx
call fcn.0047b4a0
inc word [esi]
lea edx, [esp + 0x1e4]
lea eax, [esp + 0x78]
push edx
push eax
call fcn.0047b240
add esp, 0x14
test eax, eax
jge 0x4756f7
test ebx, ebx
je 0x47577d
mov eax, dword [esp + 0x6c]
mov ebp, dword [esp + 0x70]
sub esi, edi
inc eax
sub ebp, edi
dec ebx
test ebx, ebx
mov dword [esp + 0x6c], eax
mov dword [esp + 0x70], ebp
jle 0x475498
cmp eax, dword [esp + 0x1d8]
jge 0x475498
mov word [esi], 0
mov eax, dword [esp + 0x6c]
mov ebp, dword [esp + 0x70]
sub esi, edi
inc eax
sub ebp, edi
dec ebx
mov dword [esp + 0x6c], eax
test ebx, ebx
mov dword [esp + 0x70], ebp
jg 0x47574c
jmp 0x475498
mov eax, dword [esp + 0x2e8]
test eax, eax
jle 0x47579f
mov ecx, dword [esp + 0x2ec]
cmp word [ecx + eax*2 - 2], 0
jne 0x47579f
dec eax
mov dword [esp + 0x2e8], eax
mov eax, dword [esp + 0x24]
test eax, eax
jne 0x4757be
mov edx, dword [esp + 0x1c]
lea eax, [esp + 0x6c]
push edx
push eax
call fcn.0047b200
add esp, 8
jmp 0x476be2
mov ecx, dword [esp + 0x1c]
push eax
push ecx
lea edx, [esp + 0x74]
jmp 0x476bd9
lea ecx, [esp + 0x70e4]
cmp al, 2
mov dword [esp + 0x120], ecx
jne 0x475e42
mov edx, dword [esp + 0x2c]
xor eax, eax
cmp edx, eax
je 0x47596c
lea ecx, [esp + 0x4b14]
mov dword [esp + 0x5a4], ecx
lea ecx, [edx + edx]
cmp ecx, eax
mov dword [esp + 0x24], ecx
jle 0x475821
mov edx, dword [esp + 0x5a4]
inc eax
cmp eax, ecx
mov word [edx + eax*2 - 2], 0
jl 0x47580a
mov edx, dword [esp + 0x2c]
lea eax, [esp + 0x4b14]
xor ebx, ebx
test edx, edx
mov dword [esp + 0x21c], eax
mov dword [esp + 0x218], 0
jle 0x475937
mov ecx, dword [esp + 0x30]
test edx, edx
mov bp, word [ecx + ebx*2]
je 0x47590a
test bp, bp
je 0x47590a
cmp bp, 1
jne 0x47587d
lea edx, [esp + 0x218]
lea eax, [esp + 0x2c]
push edx
lea ecx, [esp + 0x21c]
push eax
push ecx
jmp 0x4758fe
lea esi, [esp + 0xa14]
test edx, edx
mov dword [esp + 0x620], esi
jl 0x4758a4
lea ecx, [edx + 1]
xor eax, eax
lea edi, [esp + 0xa14]
shr ecx, 1
rep stosd dword es:[edi], eax
adc ecx, ecx
rep stosw word es:[edi], ax
xor eax, eax
test edx, edx
jle 0x4758d7
mov ecx, ebp
and ecx, 0xffff
mov edi, dword [esp + 0x30]
xor edx, edx
mov ebp, dword [esi + eax*2]
mov dx, word [edi + eax*2]
imul edx, ecx
add ebp, edx
mov dword [esi + eax*2], ebp
mov edx, dword [esp + 0x2c]
mov esi, dword [esp + 0x620]
inc eax
cmp eax, edx
jl 0x4758b2
cmp word [esi + edx*2], 0
je 0x4758df
inc edx
lea eax, [esp + 0x218]
mov dword [esp + 0x61c], edx
lea ecx, [esp + 0x61c]
push eax
lea edx, [esp + 0x21c]
push ecx
push edx
call fcn.0047b3a0
mov edx, dword [esp + 0x38]
add esp, 0xc
mov eax, dword [esp + 0x218]
test eax, eax
jle 0x47591d
dec eax
mov dword [esp + 0x218], eax
mov esi, dword [esp + 0x21c]
add esi, 2
inc ebx
cmp ebx, edx
mov dword [esp + 0x21c], esi
jl 0x475844
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x5a4]
cmp word [ecx + eax*2 - 2], 0
jne 0x47594b
dec eax
mov dword [esp + 0x5a0], eax
lea edx, [esp + 0x11c]
lea eax, [esp + 0x5a0]
push edx
push eax
call fcn.0047b200
add esp, 8
jmp 0x475973
mov dword [esp + 0x11c], eax
lea edx, [esp + 0x2b8]
lea esi, [esp + 0x2b8]
lea ecx, [esp + 0xadfc]
mov dword [esp + 0x1c], esi
test edx, edx
mov dword [esp + 0x2fc], ecx
jne 0x4759b0
lea eax, [esp + 0xaf00]
lea esi, [esp + 0x83c]
mov dword [esp + 0x840], eax
mov dword [esp + 0x1c], esi
mov eax, dword [esp + 0x11c]
xor edi, edi
cmp eax, edi
jne 0x4759cb
mov dword [esp + 0x2f8], edi
mov dword [esi], edi
jmp 0x476be2
cmp dword [esp + 0x10], 1
jne 0x4759fb
mov ecx, dword [esp + 0x14]
cmp word [ecx], 1
jne 0x4759fb
lea edx, [esp + 0x2f8]
lea eax, [esp + 0x11c]
push edx
push eax
call fcn.0047b200
add esp, 8
mov dword [esi], edi
jmp 0x476be2
lea ecx, [esp + 0x10]
lea edx, [esp + 0x11c]
push ecx
push edx
call fcn.0047b240
add esp, 8
test eax, eax
jge 0x475a31
mov dword [esp + 0x2f8], edi
lea eax, [esp + 0x11c]
push esi
push eax
call fcn.0047b200
add esp, 8
jmp 0x476be2
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
mov ax, word [edx + ecx*2 - 2]
xor ecx, ecx
cmp ax, di
mov dword [esp + 0x18], eax
je 0x475a52
shr ax, 1
inc ecx
cmp ax, di
jne 0x475a49
mov esi, 0x10
lea edx, [esp + 0xa3d4]
sub esi, ecx
lea ecx, [esp + 0x6dd0]
mov dword [esp + 0x24], esi
mov dword [esp + 0x748], ecx
mov dword [esp + 0x164], edx
jne 0x475aa7
lea eax, [esp + 0x744]
lea ecx, [esp + 0x11c]
push eax
push ecx
call fcn.0047b200
lea edx, [esp + 0x168]
lea eax, [esp + 0x18]
push edx
push eax
call fcn.0047b200
add esp, 0x10
jmp 0x475ad3
lea ecx, [esp + 0x744]
push esi
lea edx, [esp + 0x120]
push ecx
push edx
call fcn.0047b290
lea eax, [esp + 0x16c]
push esi
lea ecx, [esp + 0x20]
push eax
push ecx
call fcn.0047b290
add esp, 0x18
mov eax, dword [esp + 0x744]
mov edx, dword [esp + 0x160]
mov esi, dword [esp + 0x2fc]
sub eax, edx
mov ebx, eax
mov edi, 2
lea ecx, [eax + 1]
mov eax, edx
mov edx, dword [esp + 0x748]
mov dword [esp + 0x2f8], ecx
lea esi, [esi + ecx*2 - 2]
mov dword [esp + 0x5c], eax
lea ecx, [edx + ebx*2]
mov dword [esp + 0x60], ecx
test eax, eax
jne 0x475b23
mov word [esi], ax
mov dword [esp + 0x5c], eax
jmp 0x475d9f
cmp dword [esp + 0x160], 1
jne 0x475bbc
cmp eax, 1
jne 0x475b78
mov edx, dword [esp + 0x60]
xor eax, eax
xor ecx, ecx
mov ax, word [edx]
mov edx, dword [esp + 0x164]
mov cx, word [edx]
cdq
idiv ecx
xor edx, edx
mov word [esi], ax
mov ecx, dword [esp + 0x164]
imul ax, word [ecx]
mov ecx, dword [esp + 0x60]
sub word [ecx], ax
mov eax, dword [esp + 0x60]
cmp word [eax], dx
setne dl
mov dword [esp + 0x5c], edx
jmp 0x475d9f
mov ecx, dword [esp + 0x60]
mov edx, dword [esp + 0x164]
xor ebp, ebp
mov ecx, dword [ecx]
mov bp, word [edx]
mov eax, ecx
xor edx, edx
div ebp
mov word [esi], ax
mov edx, dword [esp + 0x164]
imul ax, word [edx]
sub ecx, eax
mov eax, dword [esp + 0x60]
mov word [eax], cx
mov edx, dword [esp + 0x60]
xor ecx, ecx
cmp word [edx], cx
setne cl
mov dword [esp + 0x5c], ecx
jmp 0x475d9f
lea eax, [esp + 0x5c]
lea ecx, [esp + 0x5c]
push eax
push ecx
call fcn.0047b200
lea edx, [esp + 0x168]
lea eax, [esp + 0x64]
push edx
push eax
call fcn.0047b240
add esp, 0x10
test eax, eax
jge 0x475bee
mov word [esi], 0
jmp 0x475d9f
mov eax, dword [esp + 0x5c]
mov ecx, dword [esp + 0x160]
cmp eax, ecx
jne 0x475c20
mov ebp, dword [esp + 0x164]
xor edx, edx
mov dx, word [ebp + ecx*2 - 2]
mov ebp, dword [esp + 0x60]
mov ecx, edx
xor edx, edx
mov dx, word [ebp + eax*2 - 2]
inc ecx
mov eax, edx
cdq
idiv ecx
jmp 0x475c3d
mov edx, dword [esp + 0x60]
mov ebp, dword [esp + 0x164]
mov eax, dword [edx + eax*2 - 4]
xor edx, edx
mov dx, word [ebp + ecx*2 - 2]
mov ecx, edx
xor edx, edx
inc ecx
div ecx
lea edx, [esp + 0x72f0]
mov word [esi], ax
mov dword [esp + 0x474], edx
mov edx, dword [esp + 0x160]
mov dword [esp + 0x470], 0
mov ax, word [esi]
test edx, edx
mov dword [esp + 0x18], eax
je 0x475d3c
test ax, ax
je 0x475d3c
cmp ax, 1
jne 0x475ca3
lea eax, [esp + 0x470]
lea ecx, [esp + 0x160]
push eax
lea edx, [esp + 0x474]
push ecx
push edx
call fcn.0047b3a0
add esp, 0xc
jmp 0x475d3c
lea ebp, [esp + 0xd20]
test edx, edx
mov dword [esp + 0x49c], ebp
jl 0x475cca
lea ecx, [edx + 1]
xor eax, eax
lea edi, [esp + 0xd20]
shr ecx, 1
rep stosd dword es:[edi], eax
adc ecx, ecx
rep stosw word es:[edi], ax
xor eax, eax
test edx, edx
jle 0x475d07
mov ecx, dword [esp + 0x18]
and ecx, 0xffff
mov edi, dword [esp + 0x164]
xor edx, edx
mov dx, word [edi + eax*2]
mov edi, dword [ebp + eax*2]
imul edx, ecx
add edi, edx
mov dword [ebp + eax*2], edi
mov edx, dword [esp + 0x160]
mov ebp, dword [esp + 0x49c]
inc eax
cmp eax, edx
jl 0x475cda
cmp word [ebp + edx*2], 0
je 0x475d10
inc edx
lea eax, [esp + 0x470]
mov dword [esp + 0x498], edx
lea ecx, [esp + 0x498]
push eax
lea edx, [esp + 0x474]
push ecx
push edx
call fcn.0047b3a0
add esp, 0xc
mov edi, 2
lea eax, [esp + 0x5c]
lea ecx, [esp + 0x470]
push eax
lea edx, [esp + 0x60]
push ecx
push edx
call fcn.0047b4a0
lea eax, [esp + 0x16c]
lea ecx, [esp + 0x68]
push eax
push ecx
call fcn.0047b240
add esp, 0x14
test eax, eax
jl 0x475d9f
lea edx, [esp + 0x5c]
lea eax, [esp + 0x160]
push edx
lea ecx, [esp + 0x60]
push eax
push ecx
call fcn.0047b4a0
inc word [esi]
lea edx, [esp + 0x16c]
lea eax, [esp + 0x68]
push edx
push eax
call fcn.0047b240
add esp, 0x14
test eax, eax
jge 0x475d6c
test ebx, ebx
je 0x475df2
mov eax, dword [esp + 0x5c]
mov ebp, dword [esp + 0x60]
sub esi, edi
inc eax
sub ebp, edi
dec ebx
test ebx, ebx
mov dword [esp + 0x5c], eax
mov dword [esp + 0x60], ebp
jle 0x475b13
cmp eax, dword [esp + 0x160]
jge 0x475b13
mov word [esi], 0
mov eax, dword [esp + 0x5c]
mov ebp, dword [esp + 0x60]
sub esi, edi
inc eax
sub ebp, edi
dec ebx
mov dword [esp + 0x5c], eax
test ebx, ebx
mov dword [esp + 0x60], ebp
jg 0x475dc1
jmp 0x475b13
mov eax, dword [esp + 0x2f8]
test eax, eax
jle 0x475e14
mov ecx, dword [esp + 0x2fc]
cmp word [ecx + eax*2 - 2], 0
jne 0x475e14
dec eax
mov dword [esp + 0x2f8], eax
mov eax, dword [esp + 0x24]
test eax, eax
jne 0x475e33
mov edx, dword [esp + 0x1c]
lea eax, [esp + 0x5c]
push edx
push eax
call fcn.0047b200
add esp, 8
jmp 0x476be2
mov ecx, dword [esp + 0x1c]
push eax
push ecx
lea edx, [esp + 0x64]
jmp 0x476bd9
cmp al, 3
jne 0x476be2
mov edx, dword [esp + 0x2c]
xor eax, eax
cmp edx, eax
je 0x475fd3
lea ecx, [esp + 0xf28]
mov dword [esp + 0x4bc], ecx
lea ecx, [edx + edx]
cmp ecx, eax
mov dword [esp + 0x24], ecx
jle 0x475e88
mov edx, dword [esp + 0x4bc]
inc eax
cmp eax, ecx
mov word [edx + eax*2 - 2], 0
jl 0x475e71
mov edx, dword [esp + 0x2c]
lea eax, [esp + 0xf28]
xor ebx, ebx
test edx, edx
mov dword [esp + 0x22c], eax
mov dword [esp + 0x228], 0
jle 0x475f9e
mov ecx, dword [esp + 0x30]
test edx, edx
mov bp, word [ecx + ebx*2]
je 0x475f71
test bp, bp
je 0x475f71
cmp bp, 1
jne 0x475ee4
lea edx, [esp + 0x228]
lea eax, [esp + 0x2c]
push edx
lea ecx, [esp + 0x22c]
push eax
push ecx
jmp 0x475f65
lea esi, [esp + 0x1130]
test edx, edx
mov dword [esp + 0x4ac], esi
jl 0x475f0b
lea ecx, [edx + 1]
xor eax, eax
lea edi, [esp + 0x1130]
shr ecx, 1
rep stosd dword es:[edi], eax
adc ecx, ecx
rep stosw word es:[edi], ax
xor eax, eax
test edx, edx
jle 0x475f3e
mov ecx, ebp
and ecx, 0xffff
mov edi, dword [esp + 0x30]
xor edx, edx
mov ebp, dword [esi + eax*2]
mov dx, word [edi + eax*2]
imul edx, ecx
add ebp, edx
mov dword [esi + eax*2], ebp
mov edx, dword [esp + 0x2c]
mov esi, dword [esp + 0x4ac]
inc eax
cmp eax, edx
jl 0x475f19
cmp word [esi + edx*2], 0
je 0x475f46
inc edx
lea eax, [esp + 0x228]
mov dword [esp + 0x4a8], edx
lea ecx, [esp + 0x4a8]
push eax
lea edx, [esp + 0x22c]
push ecx
push edx
call fcn.0047b3a0
mov edx, dword [esp + 0x38]
add esp, 0xc
mov eax, dword [esp + 0x228]
test eax, eax
jle 0x475f84
dec eax
mov dword [esp + 0x228], eax
mov esi, dword [esp + 0x22c]
add esi, 2
inc ebx
cmp ebx, edx
mov dword [esp + 0x22c], esi
jl 0x475eab
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x4bc]
cmp word [ecx + eax*2 - 2], 0
jne 0x475fb2
dec eax
mov dword [esp + 0x4b8], eax
lea edx, [esp + 0x11c]
lea eax, [esp + 0x4b8]
push edx
push eax
call fcn.0047b200
add esp, 8
jmp 0x475fda
mov dword [esp + 0x11c], eax
lea edx, [esp + 0x11c]
lea esi, [esp + 0x11c]
lea ecx, [esp + 0xb108]
mov dword [esp + 0x1c], esi
test edx, edx
mov dword [esp + 0x30c], ecx
jne 0x476017
lea eax, [esp + 0xb20c]
lea esi, [esp + 0x7fc]
mov dword [esp + 0x800], eax
mov dword [esp + 0x1c], esi
mov eax, dword [esp + 0x11c]
xor edi, edi
cmp eax, edi
jne 0x476032
mov dword [esp + 0x308], edi
mov dword [esi], edi
jmp 0x47650d
cmp dword [esp + 0x10], 1
jne 0x476062
mov ecx, dword [esp + 0x14]
cmp word [ecx], 1
jne 0x476062
lea edx, [esp + 0x308]
lea eax, [esp + 0x11c]
push edx
push eax
call fcn.0047b200
add esp, 8
mov dword [esi], edi
jmp 0x47650d
lea ecx, [esp + 0x10]
lea edx, [esp + 0x11c]
push ecx
push edx
call fcn.0047b240
add esp, 8
test eax, eax
jge 0x476098
lea eax, [esp + 0x11c]
push esi
push eax
mov dword [esp + 0x310], edi
call fcn.0047b200
add esp, 8
jmp 0x47650d
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
mov ax, word [edx + ecx*2 - 2]
xor ecx, ecx
cmp ax, di
mov dword [esp + 0x18], eax
je 0x4760b9
shr ax, 1
inc ecx
cmp ax, di
jne 0x4760b0
mov esi, 0x10
lea edx, [esp + 0xc24c]
sub esi, ecx
lea ecx, [esp + 0x6fdc]
mov dword [esp + 0x24], esi
mov dword [esp + 0x6b8], ecx
mov dword [esp + 0x174], edx
jne 0x47610e
lea eax, [esp + 0x6b4]
lea ecx, [esp + 0x11c]
push eax
push ecx
call fcn.0047b200
lea edx, [esp + 0x178]
lea eax, [esp + 0x18]
push edx
push eax
call fcn.0047b200
add esp, 0x10
jmp 0x47613a
lea ecx, [esp + 0x6b4]
push esi
lea edx, [esp + 0x120]
push ecx
push edx
call fcn.0047b290
lea eax, [esp + 0x17c]
push esi
lea ecx, [esp + 0x20]
push eax
push ecx
call fcn.0047b290
add esp, 0x18
mov eax, dword [esp + 0x6b4]
mov edx, dword [esp + 0x170]
mov esi, dword [esp + 0x30c]
sub eax, edx
mov ebx, eax
mov edi, 2
lea ecx, [eax + 1]
mov eax, edx
mov edx, dword [esp + 0x6b8]
mov dword [esp + 0x308], ecx
lea esi, [esi + ecx*2 - 2]
mov dword [esp + 0x84], eax
lea ecx, [edx + ebx*2]
mov dword [esp + 0x88], ecx
test eax, eax
jne 0x476193
mov word [esi], ax
mov dword [esp + 0x84], eax
jmp 0x47644b
cmp dword [esp + 0x170], 1
jne 0x476244
cmp eax, 1
jne 0x4761f4
mov edx, dword [esp + 0x88]
xor eax, eax
xor ecx, ecx
mov ax, word [edx]
mov edx, dword [esp + 0x174]
mov cx, word [edx]
cdq
idiv ecx
xor edx, edx
mov word [esi], ax
mov ecx, dword [esp + 0x174]
imul ax, word [ecx]
mov ecx, dword [esp + 0x88]
sub word [ecx], ax
mov eax, dword [esp + 0x88]
cmp word [eax], dx
setne dl
mov dword [esp + 0x84], edx
jmp 0x47644b
mov ecx, dword [esp + 0x88]
mov edx, dword [esp + 0x174]
xor ebp, ebp
mov ecx, dword [ecx]
mov bp, word [edx]
mov eax, ecx
xor edx, edx
div ebp
mov word [esi], ax
mov edx, dword [esp + 0x174]
imul ax, word [edx]
sub ecx, eax
mov eax, dword [esp + 0x88]
mov word [eax], cx
mov edx, dword [esp + 0x88]
xor ecx, ecx
cmp word [edx], cx
setne cl
mov dword [esp + 0x84], ecx
jmp 0x47644b
lea eax, [esp + 0x84]
lea ecx, [esp + 0x84]
push eax
push ecx
call fcn.0047b200
lea edx, [esp + 0x178]
lea eax, [esp + 0x8c]
push edx
push eax
call fcn.0047b240
add esp, 0x10
test eax, eax
jge 0x47627f
mov word [esi], 0
jmp 0x47644b
mov eax, dword [esp + 0x84]
mov ecx, dword [esp + 0x170]
cmp eax, ecx
jne 0x4762b7
mov ebp, dword [esp + 0x174]
xor edx, edx
mov dx, word [ebp + ecx*2 - 2]
mov ebp, dword [esp + 0x88]
mov ecx, edx
xor edx, edx
mov dx, word [ebp + eax*2 - 2]
inc ecx
mov eax, edx
cdq
idiv ecx
jmp 0x4762d7
mov edx, dword [esp + 0x88]
mov ebp, dword [esp + 0x174]
mov eax, dword [edx + eax*2 - 4]
xor edx, edx
mov dx, word [ebp + ecx*2 - 2]
mov ecx, edx
xor edx, edx
inc ecx
div ecx
lea edx, [esp + 0x74fc]
mov word [esi], ax
mov dword [esp + 0x3d4], edx
mov edx, dword [esp + 0x170]
mov dword [esp + 0x3d0], 0
mov ax, word [esi]
test edx, edx
mov dword [esp + 0x18], eax
je 0x4763d6
test ax, ax
je 0x4763d6
cmp ax, 1
jne 0x47633d
lea eax, [esp + 0x3d0]
lea ecx, [esp + 0x170]
push eax
lea edx, [esp + 0x3d4]
push ecx
push edx
call fcn.0047b3a0
add esp, 0xc
jmp 0x4763d6
lea ebp, [esp + 0x1338]
test edx, edx
mov dword [esp + 0x4cc], ebp
jl 0x476364
lea ecx, [edx + 1]
xor eax, eax
lea edi, [esp + 0x1338]
shr ecx, 1
rep stosd dword es:[edi], eax
adc ecx, ecx
rep stosw word es:[edi], ax
xor eax, eax
test edx, edx
jle 0x4763a1
mov ecx, dword [esp + 0x18]
and ecx, 0xffff
mov edi, dword [esp + 0x174]
xor edx, edx
mov dx, word [edi + eax*2]
mov edi, dword [ebp + eax*2]
imul edx, ecx
add edi, edx
mov dword [ebp + eax*2], edi
mov edx, dword [esp + 0x170]
mov ebp, dword [esp + 0x4cc]
inc eax
cmp eax, edx
jl 0x476374
cmp word [ebp + edx*2], 0
je 0x4763aa
inc edx
lea eax, [esp + 0x3d0]
mov dword [esp + 0x4c8], edx
lea ecx, [esp + 0x4c8]
push eax
lea edx, [esp + 0x3d4]
push ecx
push edx
call fcn.0047b3a0
add esp, 0xc
mov edi, 2
lea eax, [esp + 0x84]
lea ecx, [esp + 0x3d0]
push eax
lea edx, [esp + 0x88]
push ecx
push edx
call fcn.0047b4a0
lea eax, [esp + 0x17c]
lea ecx, [esp + 0x90]
push eax
push ecx
call fcn.0047b240
add esp, 0x14
test eax, eax
jl 0x47644b
lea edx, [esp + 0x84]
lea eax, [esp + 0x170]
push edx
lea ecx, [esp + 0x88]
push eax
push ecx
call fcn.0047b4a0
inc word [esi]
lea edx, [esp + 0x17c]
lea eax, [esp + 0x90]
push edx
push eax
call fcn.0047b240
add esp, 0x14
test eax, eax
jge 0x47640f
test ebx, ebx
je 0x4764b6
mov eax, dword [esp + 0x84]
mov ebp, dword [esp + 0x88]
sub esi, edi
inc eax
sub ebp, edi
dec ebx
test ebx, ebx
mov dword [esp + 0x84], eax
mov dword [esp + 0x88], ebp
jle 0x476180
cmp eax, dword [esp + 0x170]
jge 0x476180
mov word [esi], 0
mov eax, dword [esp + 0x84]
mov ebp, dword [esp + 0x88]
sub esi, edi
inc eax
sub ebp, edi
dec ebx
mov dword [esp + 0x84], eax
test ebx, ebx
mov dword [esp + 0x88], ebp
jg 0x476479
jmp 0x476180
mov eax, dword [esp + 0x308]
test eax, eax
jle 0x4764d8
mov ecx, dword [esp + 0x30c]
cmp word [ecx + eax*2 - 2], 0
jne 0x4764d8
dec eax
mov dword [esp + 0x308], eax
mov eax, dword [esp + 0x24]
test eax, eax
jne 0x4764f7
mov edx, dword [esp + 0x1c]
lea eax, [esp + 0x84]
push edx
push eax
call fcn.0047b200
add esp, 8
jmp 0x47650d
mov ecx, dword [esp + 0x1c]
push eax
lea edx, [esp + 0x88]
push ecx
push edx
call fcn.0047b310
add esp, 0xc
mov edx, dword [esp + 0x11c]
xor eax, eax
cmp edx, eax
je 0x4766c9
mov ecx, dword [esp + 0x2c]
cmp ecx, eax
je 0x4766c9
lea esi, [esp + 0x1540]
mov dword [esp + 0x4ec], esi
lea esi, [ecx + edx]
cmp esi, eax
mov dword [esp + 0x1c], esi
jle 0x476563
mov ecx, esi
mov edx, dword [esp + 0x4ec]
inc eax
cmp eax, ecx
mov word [edx + eax*2 - 2], 0
jl 0x476545
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x11c]
cmp edx, ecx
jl 0x476574
lea esi, [esp + 0x11c]
lea ebp, [esp + 0x2c]
jmp 0x47657f
lea esi, [esp + 0x2c]
lea ebp, [esp + 0x11c]
lea eax, [esp + 0x1540]
xor ebx, ebx
mov dword [esp + 0x23c], eax
mov dword [esp + 0x238], ebx
mov eax, dword [ebp]
mov dword [esp + 0x24], ebp
cmp eax, ebx
jle 0x476694
mov ecx, dword [ebp + 4]
mov eax, dword [esi]
test eax, eax
mov di, word [ecx + ebx*2]
je 0x476664
test di, di
je 0x476664
cmp di, 1
jne 0x4765d3
lea edx, [esp + 0x238]
push edx
push esi
jmp 0x476654
lea edx, [esp + 0x1748]
xor eax, eax
mov dword [esp + 0x4dc], edx
mov ecx, dword [esi]
test ecx, ecx
jl 0x4765fd
lea ecx, [esp + 0x1748]
mov word [ecx], 0
inc eax
add ecx, 2
cmp eax, dword [esi]
jle 0x4765f0
mov ecx, dword [esi]
xor eax, eax
test ecx, ecx
jle 0x476633
mov ecx, edi
and ecx, 0xffff
mov edi, dword [esi + 4]
xor ebp, ebp
mov bp, word [edi + eax*2]
mov edi, dword [edx + eax*2]
imul ebp, ecx
add edi, ebp
mov dword [edx + eax*2], edi
mov edx, dword [esi]
inc eax
cmp eax, edx
mov edx, dword [esp + 0x4dc]
jl 0x47660d
mov ebp, dword [esp + 0x24]
mov eax, dword [esi]
cmp word [edx + eax*2], 0
je 0x47663d
inc eax
lea ecx, [esp + 0x238]
lea edx, [esp + 0x4d8]
push ecx
mov dword [esp + 0x4dc], eax
push edx
lea eax, [esp + 0x240]
push eax
call fcn.0047b3a0
add esp, 0xc
mov eax, dword [esp + 0x238]
test eax, eax
jle 0x476677
dec eax
mov dword [esp + 0x238], eax
mov edx, dword [esp + 0x23c]
add edx, 2
inc ebx
mov dword [esp + 0x23c], edx
mov eax, dword [ebp]
cmp ebx, eax
jl 0x4765a5
mov ecx, dword [esp + 0x4ec]
mov eax, dword [esp + 0x1c]
cmp word [ecx + eax*2 - 2], 0
jne 0x4766a8
dec eax
mov dword [esp + 0x4e8], eax
lea edx, [esp + 0x11c]
lea eax, [esp + 0x4e8]
push edx
push eax
call fcn.0047b200
add esp, 8
jmp 0x4766d0
mov dword [esp + 0x11c], eax
lea edx, [esp + 0x2c0]
lea esi, [esp + 0x2c0]
lea ecx, [esp + 0xb414]
mov dword [esp + 0x1c], esi
test edx, edx
mov dword [esp + 0x31c], ecx
jne 0x47670d
lea eax, [esp + 0xb518]
lea esi, [esp + 0x84c]
mov dword [esp + 0x850], eax
mov dword [esp + 0x1c], esi
mov eax, dword [esp + 0x11c]
xor edi, edi
cmp eax, edi
jne 0x476728
mov dword [esp + 0x318], edi
mov dword [esi], edi
jmp 0x476be2
cmp dword [esp + 0x10], 1
jne 0x476745
mov ecx, dword [esp + 0x14]
cmp word [ecx], 1
jne 0x476745
lea edx, [esp + 0x318]
jmp 0x4759e3
lea ecx, [esp + 0x10]
lea edx, [esp + 0x11c]
push ecx
push edx
call fcn.0047b240
add esp, 8
test eax, eax
jge 0x47676a
mov dword [esp + 0x318], edi
jmp 0x475a1b
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
mov ax, word [edx + ecx*2 - 2]
xor ecx, ecx
cmp ax, di
mov dword [esp + 0x18], eax
je 0x47678b
shr ax, 1
inc ecx
cmp ax, di
jne 0x476782
mov esi, 0x10
lea edx, [esp + 0xa6e0]
sub esi, ecx
lea ecx, [esp + 0x71e8]
mov dword [esp + 0x24], esi
mov dword [esp + 0x6c0], ecx
mov dword [esp + 0x184], edx
jne 0x4767e0
lea eax, [esp + 0x6bc]
lea ecx, [esp + 0x11c]
push eax
push ecx
call fcn.0047b200
lea edx, [esp + 0x188]
lea eax, [esp + 0x18]
push edx
push eax
call fcn.0047b200
add esp, 0x10
jmp 0x47680c
lea ecx, [esp + 0x6bc]
push esi
lea edx, [esp + 0x120]
push ecx
push edx
call fcn.0047b290
lea eax, [esp + 0x18c]
push esi
lea ecx, [esp + 0x20]
push eax
push ecx
call fcn.0047b290
add esp, 0x18
mov eax, dword [esp + 0x6bc]
mov edx, dword [esp + 0x180]
mov esi, dword [esp + 0x31c]
sub eax, edx
mov ebx, eax
mov edi, 2
lea ecx, [eax + 1]
mov eax, edx
mov edx, dword [esp + 0x6c0]
mov dword [esp + 0x318], ecx
lea esi, [esi + ecx*2 - 2]
mov dword [esp + 0x94], eax
lea ecx, [edx + ebx*2]
mov dword [esp + 0x98], ecx
test eax, eax
jne 0x476865
mov word [esi], ax
mov dword [esp + 0x94], eax
jmp 0x476b20
cmp dword [esp + 0x180], 1
jne 0x476919
cmp eax, 1
jne 0x4768c6
mov edx, dword [esp + 0x98]
xor eax, eax
xor ecx, ecx
mov ax, word [edx]
mov edx, dword [esp + 0x184]
mov cx, word [edx]
cdq
idiv ecx
xor edx, edx
mov word [esi], ax
mov ecx, dword [esp + 0x184]
imul ax, word [ecx]
mov ecx, dword [esp + 0x98]
sub word [ecx], ax
mov eax, dword [esp + 0x98]
cmp word [eax], dx
setne dl
mov dword [esp + 0x94], edx
jmp 0x476b20
mov ecx, dword [esp + 0x98]
mov edx, dword [esp + 0x184]
xor ebp, ebp
mov ecx, dword [ecx]
mov bp, word [edx]
mov eax, ecx
xor edx, edx
div ebp
mov word [esi], ax
mov edx, dword [esp + 0x184]
mov dx, word [edx]
imul dx, ax
mov eax, dword [esp + 0x98]
sub ecx, edx
mov word [eax], cx
mov edx, dword [esp + 0x98]
xor ecx, ecx
cmp word [edx], cx
setne cl
mov dword [esp + 0x94], ecx
jmp 0x476b20
lea eax, [esp + 0x94]
lea ecx, [esp + 0x94]
push eax
push ecx
call fcn.0047b200
lea edx, [esp + 0x188]
lea eax, [esp + 0x9c]
push edx
push eax
call fcn.0047b240
add esp, 0x10
test eax, eax
jge 0x476954
mov word [esi], 0
jmp 0x476b20
mov eax, dword [esp + 0x94]
mov ecx, dword [esp + 0x180]
cmp eax, ecx
jne 0x47698c
mov ebp, dword [esp + 0x184]
xor edx, edx
mov dx, word [ebp + ecx*2 - 2]
mov ebp, dword [esp + 0x98]
mov ecx, edx
xor edx, edx
mov dx, word [ebp + eax*2 - 2]
inc ecx
mov eax, edx
cdq
idiv ecx
jmp 0x4769ac
mov edx, dword [esp + 0x98]
mov ebp, dword [esp + 0x184]
mov eax, dword [edx + eax*2 - 4]
xor edx, edx
mov dx, word [ebp + ecx*2 - 2]
mov ecx, edx
xor edx, edx
inc ecx
div ecx
lea edx, [esp + 0x7708]
mov word [esi], ax
mov dword [esp + 0x3dc], edx
mov edx, dword [esp + 0x180]
mov dword [esp + 0x3d8], 0
mov ax, word [esi]
test edx, edx
mov dword [esp + 0x18], eax
je 0x476aab
test ax, ax
je 0x476aab
cmp ax, 1
jne 0x476a12
lea eax, [esp + 0x3d8]
lea ecx, [esp + 0x180]
push eax
lea edx, [esp + 0x3dc]
push ecx
push edx
call fcn.0047b3a0
add esp, 0xc
jmp 0x476aab
lea ebp, [esp + 0x1950]
test edx, edx
mov dword [esp + 0x4fc], ebp
jl 0x476a39
lea ecx, [edx + 1]
xor eax, eax
lea edi, [esp + 0x1950]
shr ecx, 1
rep stosd dword es:[edi], eax
adc ecx, ecx
rep stosw word es:[edi], ax
xor eax, eax
test edx, edx
jle 0x476a76
mov ecx, dword [esp + 0x18]
and ecx, 0xffff
mov edi, dword [esp + 0x184]
xor edx, edx
mov dx, word [edi + eax*2]
mov edi, dword [ebp + eax*2]
imul edx, ecx
add edi, edx
mov dword [ebp + eax*2], edi
mov edx, dword [esp + 0x180]
mov ebp, dword [esp + 0x4fc]
inc eax
cmp eax, edx
jl 0x476a49
cmp word [ebp + edx*2], 0
je 0x476a7f
inc edx
lea eax, [esp + 0x3d8]
mov dword [esp + 0x4f8], edx
lea ecx, [esp + 0x4f8]
push eax
lea edx, [esp + 0x3dc]
push ecx
push edx
call fcn.0047b3a0
add esp, 0xc
mov edi, 2
lea eax, [esp + 0x94]
lea ecx, [esp + 0x3d8]
push eax
lea edx, [esp + 0x98]
push ecx
push edx
call fcn.0047b4a0
lea eax, [esp + 0x18c]
lea ecx, [esp + 0xa0]
push eax
push ecx
call fcn.0047b240
add esp, 0x14
test eax, eax
jl 0x476b20
lea edx, [esp + 0x94]
lea eax, [esp + 0x180]
push edx
lea ecx, [esp + 0x98]
push eax
push ecx
call fcn.0047b4a0
inc word [esi]
lea edx, [esp + 0x18c]
lea eax, [esp + 0xa0]
push edx
push eax
call fcn.0047b240
add esp, 0x14
test eax, eax
jge 0x476ae4
test ebx, ebx
je 0x476b8b
mov eax, dword [esp + 0x94]
mov ebp, dword [esp + 0x98]
sub esi, edi
inc eax
sub ebp, edi
dec ebx
test ebx, ebx
mov dword [esp + 0x94], eax
mov dword [esp + 0x98], ebp
jle 0x476852
cmp eax, dword [esp + 0x180]
jge 0x476852
mov word [esi], 0
mov eax, dword [esp + 0x94]
mov ebp, dword [esp + 0x98]
sub esi, edi
inc eax
sub ebp, edi
dec ebx
mov dword [esp + 0x94], eax
test ebx, ebx
mov dword [esp + 0x98], ebp
jg 0x476b4e
jmp 0x476852
mov eax, dword [esp + 0x318]
test eax, eax
jle 0x476bad
mov ecx, dword [esp + 0x31c]
cmp word [ecx + eax*2 - 2], 0
jne 0x476bad
dec eax
mov dword [esp + 0x318], eax
mov eax, dword [esp + 0x24]
test eax, eax
jne 0x476bcc
mov edx, dword [esp + 0x1c]
lea eax, [esp + 0x94]
push edx
push eax
call fcn.0047b200
add esp, 8
jmp 0x476be2
mov ecx, dword [esp + 0x1c]
push eax
push ecx
lea edx, [esp + 0x9c]
push edx
call fcn.0047b310
add esp, 0xc
mov ecx, dword [esp + 0x28]
lea eax, [esp + 0x4c]
push eax
push ecx
call fcn.0047b200
add esp, 8
mov dword [esp + 0x28], 2
mov edx, dword [esp + 0x4c]
xor eax, eax
cmp edx, eax
je 0x476d82
lea ecx, [esp + 0x1b58]
mov dword [esp + 0x51c], ecx
lea ecx, [edx + edx]
cmp ecx, eax
mov dword [esp + 0x24], ecx
jle 0x476c3a
mov edx, dword [esp + 0x51c]
inc eax
cmp eax, ecx
mov word [edx + eax*2 - 2], 0
jl 0x476c23
mov edx, dword [esp + 0x4c]
lea eax, [esp + 0x1b58]
xor ebx, ebx
test edx, edx
mov dword [esp + 0x24c], eax
mov dword [esp + 0x248], 0
jle 0x476d50
mov ecx, dword [esp + 0x50]
test edx, edx
mov bp, word [ecx + ebx*2]
je 0x476d23
test bp, bp
je 0x476d23
cmp bp, 1
jne 0x476c96
lea edx, [esp + 0x248]
lea eax, [esp + 0x4c]
push edx
lea ecx, [esp + 0x24c]
push eax
push ecx
jmp 0x476d17
lea esi, [esp + 0x1d60]
test edx, edx
mov dword [esp + 0x50c], esi
jl 0x476cbd
lea ecx, [edx + 1]
xor eax, eax
lea edi, [esp + 0x1d60]
shr ecx, 1
rep stosd dword es:[edi], eax
adc ecx, ecx
rep stosw word es:[edi], ax
xor eax, eax
test edx, edx
jle 0x476cf0
mov ecx, ebp
and ecx, 0xffff
mov edi, dword [esp + 0x50]
xor edx, edx
mov ebp, dword [esi + eax*2]
mov dx, word [edi + eax*2]
imul edx, ecx
add ebp, edx
mov dword [esi + eax*2], ebp
mov edx, dword [esp + 0x4c]
mov esi, dword [esp + 0x50c]
inc eax
cmp eax, edx
jl 0x476ccb
cmp word [esi + edx*2], 0
je 0x476cf8
inc edx
lea eax, [esp + 0x248]
mov dword [esp + 0x508], edx
lea ecx, [esp + 0x508]
push eax
lea edx, [esp + 0x24c]
push ecx
push edx
call fcn.0047b3a0
mov edx, dword [esp + 0x58]
add esp, 0xc
mov eax, dword [esp + 0x248]
test eax, eax
jle 0x476d36
dec eax
mov dword [esp + 0x248], eax
mov esi, dword [esp + 0x24c]
add esi, 2
inc ebx
cmp ebx, edx
mov dword [esp + 0x24c], esi
jl 0x476c5d
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x51c]
cmp word [ecx + eax*2 - 2], 0
jne 0x476d64
dec eax
mov dword [esp + 0x518], eax
lea edx, [esp + 0x4c]
lea eax, [esp + 0x518]
push edx
push eax
call fcn.0047b200
add esp, 8
jmp 0x476d86
mov dword [esp + 0x4c], eax
lea edx, [esp + 0x4c]
lea esi, [esp + 0x4c]
lea ecx, [esp + 0xb720]
mov dword [esp + 0x1c], esi
test edx, edx
mov dword [esp + 0x32c], ecx
jne 0x476dbd
lea eax, [esp + 0xb824]
lea esi, [esp + 0x80c]
mov dword [esp + 0x810], eax
mov dword [esp + 0x1c], esi
mov eax, dword [esp + 0x4c]
xor edi, edi
cmp eax, edi
jne 0x476dd5
mov dword [esp + 0x328], edi
mov dword [esi], edi
jmp 0x4772a7
cmp dword [esp + 0x10], 1
jne 0x476e02
mov ecx, dword [esp + 0x14]
cmp word [ecx], 1
jne 0x476e02
lea edx, [esp + 0x328]
lea eax, [esp + 0x4c]
push edx
push eax
call fcn.0047b200
add esp, 8
mov dword [esi], edi
jmp 0x4772a7
lea ecx, [esp + 0x10]
lea edx, [esp + 0x4c]
push ecx
push edx
call fcn.0047b240
add esp, 8
test eax, eax
jge 0x476e32
lea eax, [esp + 0x4c]
push esi
push eax
mov dword [esp + 0x330], edi
call fcn.0047b200
add esp, 8
jmp 0x4772a7
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
mov ax, word [edx + ecx*2 - 2]
xor ecx, ecx
cmp ax, di
mov dword [esp + 0x18], eax
je 0x476e53
shr ax, 1
inc ecx
cmp ax, di
jne 0x476e4a
mov esi, 0x10
lea edx, [esp + 0xd188]
sub esi, ecx
lea ecx, [esp + 0x73f4]
mov dword [esp + 0x24], esi
mov dword [esp + 0x6d0], ecx
mov dword [esp + 0x194], edx
jne 0x476ea5
lea eax, [esp + 0x6cc]
lea ecx, [esp + 0x4c]
push eax
push ecx
call fcn.0047b200
lea edx, [esp + 0x198]
lea eax, [esp + 0x18]
push edx
push eax
call fcn.0047b200
add esp, 0x10
jmp 0x476ece
lea ecx, [esp + 0x6cc]
push esi
lea edx, [esp + 0x50]
push ecx
push edx
call fcn.0047b290
lea eax, [esp + 0x19c]
push esi
lea ecx, [esp + 0x20]
push eax
push ecx
call fcn.0047b290
add esp, 0x18
mov eax, dword [esp + 0x6cc]
mov edx, dword [esp + 0x190]
mov esi, dword [esp + 0x32c]
sub eax, edx
mov ebx, eax
mov edi, 2
lea ecx, [eax + 1]
mov eax, edx
mov edx, dword [esp + 0x6d0]
mov dword [esp + 0x328], ecx
lea esi, [esi + ecx*2 - 2]
mov dword [esp + 0xa4], eax
lea ecx, [edx + ebx*2]
mov dword [esp + 0xa8], ecx
test eax, eax
jne 0x476f27
mov word [esi], ax
mov dword [esp + 0xa4], eax
jmp 0x4771e5
cmp dword [esp + 0x190], 1
jne 0x476fde
cmp eax, 1
jne 0x476f8b
mov edx, dword [esp + 0xa8]
xor eax, eax
xor ecx, ecx
mov ax, word [edx]
mov edx, dword [esp + 0x194]
mov cx, word [edx]
cdq
idiv ecx
mov word [esi], ax
mov ecx, dword [esp + 0x194]
mov dx, word [ecx]
imul dx, ax
mov eax, dword [esp + 0xa8]
sub word [eax], dx
mov ecx, dword [esp + 0xa8]
xor eax, eax
cmp word [ecx], ax
setne al
mov dword [esp + 0xa4], eax
jmp 0x4771e5
mov edx, dword [esp + 0xa8]
mov eax, dword [esp + 0x194]
xor ebp, ebp
mov ecx, dword [edx]
mov bp, word [eax]
mov eax, ecx
xor edx, edx
div ebp
mov word [esi], ax
mov edx, dword [esp + 0x194]
mov dx, word [edx]
imul dx, ax
mov eax, dword [esp + 0xa8]
sub ecx, edx
mov word [eax], cx
mov edx, dword [esp + 0xa8]
xor ecx, ecx
cmp word [edx], cx
setne cl
mov dword [esp + 0xa4], ecx
jmp 0x4771e5
lea eax, [esp + 0xa4]
lea ecx, [esp + 0xa4]
push eax
push ecx
call fcn.0047b200
lea edx, [esp + 0x198]
lea eax, [esp + 0xac]
push edx
push eax
call fcn.0047b240
add esp, 0x10
test eax, eax
jge 0x477019
mov word [esi], 0
jmp 0x4771e5
mov eax, dword [esp + 0xa4]
mov ecx, dword [esp + 0x190]
cmp eax, ecx
jne 0x477051
mov ebp, dword [esp + 0x194]
xor edx, edx
mov dx, word [ebp + ecx*2 - 2]
mov ebp, dword [esp + 0xa8]
mov ecx, edx
xor edx, edx
mov dx, word [ebp + eax*2 - 2]
inc ecx
mov eax, edx
cdq
idiv ecx
jmp 0x477071
mov edx, dword [esp + 0xa8]
mov ebp, dword [esp + 0x194]
mov eax, dword [edx + eax*2 - 4]
xor edx, edx
mov dx, word [ebp + ecx*2 - 2]
mov ecx, edx
xor edx, edx
inc ecx
div ecx
lea edx, [esp + 0x7914]
mov word [esi], ax
mov dword [esp + 0x3ec], edx
mov edx, dword [esp + 0x190]
mov dword [esp + 0x3e8], 0
mov ax, word [esi]
test edx, edx
mov dword [esp + 0x18], eax
je 0x477170
test ax, ax
je 0x477170
cmp ax, 1
jne 0x4770d7
lea eax, [esp + 0x3e8]
lea ecx, [esp + 0x190]
push eax
lea edx, [esp + 0x3ec]
push ecx
push edx
call fcn.0047b3a0
add esp, 0xc
jmp 0x477170
lea ebp, [esp + 0x1f68]
test edx, edx
mov dword [esp + 0x52c], ebp
jl 0x4770fe
lea ecx, [edx + 1]
xor eax, eax
lea edi, [esp + 0x1f68]
shr ecx, 1
rep stosd dword es:[edi], eax
adc ecx, ecx
rep stosw word es:[edi], ax
xor eax, eax
test edx, edx
jle 0x47713b
mov ecx, dword [esp + 0x18]
and ecx, 0xffff
mov edi, dword [esp + 0x194]
xor edx, edx
mov dx, word [edi + eax*2]
mov edi, dword [ebp + eax*2]
imul edx, ecx
add edi, edx
mov dword [ebp + eax*2], edi
mov edx, dword [esp + 0x190]
mov ebp, dword [esp + 0x52c]
inc eax
cmp eax, edx
jl 0x47710e
cmp word [ebp + edx*2], 0
je 0x477144
inc edx
lea eax, [esp + 0x3e8]
mov dword [esp + 0x528], edx
lea ecx, [esp + 0x528]
push eax
lea edx, [esp + 0x3ec]
push ecx
push edx
call fcn.0047b3a0
add esp, 0xc
mov edi, 2
lea eax, [esp + 0xa4]
lea ecx, [esp + 0x3e8]
push eax
lea edx, [esp + 0xa8]
push ecx
push edx
call fcn.0047b4a0
lea eax, [esp + 0x19c]
lea ecx, [esp + 0xb0]
push eax
push ecx
call fcn.0047b240
add esp, 0x14
test eax, eax
jl 0x4771e5
lea edx, [esp + 0xa4]
lea eax, [esp + 0x190]
push edx
lea ecx, [esp + 0xa8]
push eax
push ecx
call fcn.0047b4a0
inc word [esi]
lea edx, [esp + 0x19c]
lea eax, [esp + 0xb0]
push edx
push eax
call fcn.0047b240
add esp, 0x14
test eax, eax
jge 0x4771a9
test ebx, ebx
je 0x477250
mov eax, dword [esp + 0xa4]
mov ebp, dword [esp + 0xa8]
sub esi, edi
inc eax
sub ebp, edi
dec ebx
test ebx, ebx
mov dword [esp + 0xa4], eax
mov dword [esp + 0xa8], ebp
jle 0x476f14
cmp eax, dword [esp + 0x190]
jge 0x476f14
mov word [esi], 0
mov eax, dword [esp + 0xa4]
mov ebp, dword [esp + 0xa8]
sub esi, edi
inc eax
sub ebp, edi
dec ebx
mov dword [esp + 0xa4], eax
test ebx, ebx
mov dword [esp + 0xa8], ebp
jg 0x477213
jmp 0x476f14
mov eax, dword [esp + 0x328]
test eax, eax
jle 0x477272
mov ecx, dword [esp + 0x32c]
cmp word [ecx + eax*2 - 2], 0
jne 0x477272
dec eax
mov dword [esp + 0x328], eax
mov eax, dword [esp + 0x24]
test eax, eax
jne 0x477291
mov edx, dword [esp + 0x1c]
lea eax, [esp + 0xa4]
push edx
push eax
call fcn.0047b200
add esp, 8
jmp 0x4772a7
mov ecx, dword [esp + 0x1c]
push eax
lea edx, [esp + 0xa8]
push ecx
push edx
call fcn.0047b310
add esp, 0xc
mov eax, dword [esp + 0x28]
dec eax
mov dword [esp + 0x28], eax
jne 0x476bfc
mov al, byte [esp + 0x3b0]
test al, al
je 0x479388
mov eax, dword [esp + 0x3b0]
and eax, 0xff
mov ecx, dword [esp + eax*8 + 0x2a8]
lea eax, [esp + eax*8 + 0x2a8]
test ecx, ecx
mov dword [esp + 0x28], eax
jne 0x478ca1
mov al, byte [esp + 0x3b0]
cmp al, 1
jne 0x477820
lea edx, [esp + 0x2b0]
lea esi, [esp + 0x2b0]
lea ecx, [esp + 0xba2c]
mov dword [esp + 0x1c], esi
test edx, edx
mov dword [esp + 0x33c], ecx
jne 0x477337
lea eax, [esp + 0xbb30]
lea esi, [esp + 0x7a4]
mov dword [esp + 0x7a8], eax
mov dword [esp + 0x1c], esi
mov eax, dword [esp + 0x2c]
xor edi, edi
cmp eax, edi
jne 0x47734f
mov dword [esp + 0x338], edi
mov dword [esi], edi
jmp 0x478ca1
cmp dword [esp + 0x10], 1
jne 0x47737c
mov ecx, dword [esp + 0x14]
cmp word [ecx], 1
jne 0x47737c
lea edx, [esp + 0x338]
lea eax, [esp + 0x2c]
push edx
push eax
call fcn.0047b200
add esp, 8
mov dword [esi], edi
jmp 0x478ca1
lea ecx, [esp + 0x10]
lea edx, [esp + 0x2c]
push ecx
push edx
call fcn.0047b240
add esp, 8
test eax, eax
jge 0x4773ac
lea eax, [esp + 0x2c]
push esi
push eax
mov dword [esp + 0x340], edi
call fcn.0047b200
add esp, 8
jmp 0x478ca1
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
mov ax, word [edx + ecx*2 - 2]
xor ecx, ecx
cmp ax, di
mov dword [esp + 0x18], eax
je 0x4773cd
shr ax, 1
inc ecx
cmp ax, di
jne 0x4773c4
mov esi, 0x10
lea edx, [esp + 0xa9ec]
sub esi, ecx
lea ecx, [esp + 0x7600]
mov dword [esp + 0x24], esi
mov dword [esp + 0x6e0], ecx
mov dword [esp + 0x1a4], edx
jne 0x47741f
lea eax, [esp + 0x6dc]
lea ecx, [esp + 0x2c]
push eax
push ecx
call fcn.0047b200
lea edx, [esp + 0x1a8]
lea eax, [esp + 0x18]
push edx
push eax
call fcn.0047b200
add esp, 0x10
jmp 0x477448
lea ecx, [esp + 0x6dc]
push esi
lea edx, [esp + 0x30]
push ecx
push edx
call fcn.0047b290
lea eax, [esp + 0x1ac]
push esi
lea ecx, [esp + 0x20]
push eax
push ecx
call fcn.0047b290
add esp, 0x18
mov eax, dword [esp + 0x6dc]
mov edx, dword [esp + 0x1a0]
mov esi, dword [esp + 0x33c]
sub eax, edx
mov ebx, eax
mov edi, 2
lea ecx, [eax + 1]
mov eax, edx
mov edx, dword [esp + 0x6e0]
mov dword [esp + 0x338], ecx
lea esi, [esi + ecx*2 - 2]
mov dword [esp + 0xb4], eax
lea ecx, [edx + ebx*2]
mov dword [esp + 0xb8], ecx
test eax, eax
jne 0x4774a1
mov word [esi], ax
mov dword [esp + 0xb4], eax
jmp 0x47775f
cmp dword [esp + 0x1a0], 1
jne 0x477558
cmp eax, 1
jne 0x477505
mov edx, dword [esp + 0xb8]
xor eax, eax
xor ecx, ecx
mov ax, word [edx]
mov edx, dword [esp + 0x1a4]
mov cx, word [edx]
cdq
idiv ecx
mov word [esi], ax
mov ecx, dword [esp + 0x1a4]
mov dx, word [ecx]
imul dx, ax
mov eax, dword [esp + 0xb8]
sub word [eax], dx
mov ecx, dword [esp + 0xb8]
xor eax, eax
cmp word [ecx], ax
setne al
mov dword [esp + 0xb4], eax
jmp 0x47775f
mov edx, dword [esp + 0xb8]
mov eax, dword [esp + 0x1a4]
xor ebp, ebp
mov ecx, dword [edx]
mov bp, word [eax]
mov eax, ecx
xor edx, edx
div ebp
mov word [esi], ax
mov edx, dword [esp + 0x1a4]
mov dx, word [edx]
imul dx, ax
mov eax, dword [esp + 0xb8]
sub ecx, edx
mov word [eax], cx
mov edx, dword [esp + 0xb8]
xor ecx, ecx
cmp word [edx], cx
setne cl
mov dword [esp + 0xb4], ecx
jmp 0x47775f
lea eax, [esp + 0xb4]
lea ecx, [esp + 0xb4]
push eax
push ecx
call fcn.0047b200
lea edx, [esp + 0x1a8]
lea eax, [esp + 0xbc]
push edx
push eax
call fcn.0047b240
add esp, 0x10
test eax, eax
jge 0x477593
mov word [esi], 0
jmp 0x47775f
mov eax, dword [esp + 0xb4]
mov ecx, dword [esp + 0x1a0]
cmp eax, ecx
jne 0x4775cb
mov ebp, dword [esp + 0x1a4]
xor edx, edx
mov dx, word [ebp + ecx*2 - 2]
mov ebp, dword [esp + 0xb8]
mov ecx, edx
xor edx, edx
mov dx, word [ebp + eax*2 - 2]
inc ecx
mov eax, edx
cdq
idiv ecx
jmp 0x4775eb
mov edx, dword [esp + 0xb8]
mov ebp, dword [esp + 0x1a4]
mov eax, dword [edx + eax*2 - 4]
xor edx, edx
mov dx, word [ebp + ecx*2 - 2]
mov ecx, edx
xor edx, edx
inc ecx
div ecx
lea edx, [esp + 0x7b20]
mov word [esi], ax
mov dword [esp + 0x3fc], edx
mov edx, dword [esp + 0x1a0]
mov dword [esp + 0x3f8], 0
mov ax, word [esi]
test edx, edx
mov dword [esp + 0x18], eax
je 0x4776ea
test ax, ax
je 0x4776ea
cmp ax, 1
jne 0x477651
lea eax, [esp + 0x3f8]
lea ecx, [esp + 0x1a0]
push eax
lea edx, [esp + 0x3fc]
push ecx
push edx
call fcn.0047b3a0
add esp, 0xc
jmp 0x4776ea
lea ebp, [esp + 0x2170]
test edx, edx
mov dword [esp + 0x53c], ebp
jl 0x477678
lea ecx, [edx + 1]
xor eax, eax
lea edi, [esp + 0x2170]
shr ecx, 1
rep stosd dword es:[edi], eax
adc ecx, ecx
rep stosw word es:[edi], ax
xor eax, eax
test edx, edx
jle 0x4776b5
mov ecx, dword [esp + 0x18]
and ecx, 0xffff
mov edi, dword [esp + 0x1a4]
xor edx, edx
mov dx, word [edi + eax*2]
mov edi, dword [ebp + eax*2]
imul edx, ecx
add edi, edx
mov dword [ebp + eax*2], edi
mov edx, dword [esp + 0x1a0]
mov ebp, dword [esp + 0x53c]
inc eax
cmp eax, edx
jl 0x477688
cmp word [ebp + edx*2], 0
je 0x4776be
inc edx
lea eax, [esp + 0x3f8]
mov dword [esp + 0x538], edx
lea ecx, [esp + 0x538]
push eax
lea edx, [esp + 0x3fc]
push ecx
push edx
call fcn.0047b3a0
add esp, 0xc
mov edi, 2
lea eax, [esp + 0xb4]
lea ecx, [esp + 0x3f8]
push eax
lea edx, [esp + 0xb8]
push ecx
push edx
call fcn.0047b4a0
lea eax, [esp + 0x1ac]
lea ecx, [esp + 0xc0]
push eax
push ecx
call fcn.0047b240
add esp, 0x14
test eax, eax
jl 0x47775f
lea edx, [esp + 0xb4]
lea eax, [esp + 0x1a0]
push edx
lea ecx, [esp + 0xb8]
push eax
push ecx
call fcn.0047b4a0
inc word [esi]
lea edx, [esp + 0x1ac]
lea eax, [esp + 0xc0]
push edx
push eax
call fcn.0047b240
add esp, 0x14
test eax, eax
jge 0x477723
test ebx, ebx
je 0x4777ca
mov eax, dword [esp + 0xb4]
mov ebp, dword [esp + 0xb8]
sub esi, edi
inc eax
sub ebp, edi
dec ebx
test ebx, ebx
mov dword [esp + 0xb4], eax
mov dword [esp + 0xb8], ebp
jle 0x47748e
cmp eax, dword [esp + 0x1a0]
jge 0x47748e
mov word [esi], 0
mov eax, dword [esp + 0xb4]
mov ebp, dword [esp + 0xb8]
sub esi, edi
inc eax
sub ebp, edi
dec ebx
mov dword [esp + 0xb4], eax
test ebx, ebx
mov dword [esp + 0xb8], ebp
jg 0x47778d
jmp 0x47748e
mov eax, dword [esp + 0x338]
test eax, eax
jle 0x4777ec
mov ecx, dword [esp + 0x33c]
cmp word [ecx + eax*2 - 2], 0
jne 0x4777ec
dec eax
mov dword [esp + 0x338], eax
mov eax, dword [esp + 0x24]
test eax, eax
jne 0x47780e
mov edx, dword [esp + 0x1c]
lea eax, [esp + 0xb4]
push edx
push eax
call fcn.0047b200
add esp, 8
jmp 0x478ca1
mov ecx, dword [esp + 0x1c]
push eax
push ecx
lea edx, [esp + 0xbc]
jmp 0x478c98
lea ecx, [esp + 0xc558]
cmp al, 2
mov dword [esp + 0x130], ecx
jne 0x477ef8
mov edx, dword [esp + 0x2c]
xor eax, eax
cmp edx, eax
je 0x4779bf
lea ecx, [esp + 0x2378]
mov dword [esp + 0x55c], ecx
lea ecx, [edx + edx]
cmp ecx, eax
mov dword [esp + 0x24], ecx
jle 0x477874
mov edx, dword [esp + 0x55c]
inc eax
cmp eax, ecx
mov word [edx + eax*2 - 2], 0
jl 0x47785d
mov edx, dword [esp + 0x2c]
lea eax, [esp + 0x2378]
xor ebx, ebx
test edx, edx
mov dword [esp + 0x25c], eax
mov dword [esp + 0x258], 0
jle 0x47798a
mov ecx, dword [esp + 0x30]
test edx, edx
mov bp, word [ecx + ebx*2]
je 0x47795d
test bp, bp
je 0x47795d
cmp bp, 1
jne 0x4778d0
lea edx, [esp + 0x258]
lea eax, [esp + 0x2c]
push edx
lea ecx, [esp + 0x25c]
push eax
push ecx
jmp 0x477951
lea esi, [esp + 0x2580]
test edx, edx
mov dword [esp + 0x54c], esi
jl 0x4778f7
lea ecx, [edx + 1]
xor eax, eax
lea edi, [esp + 0x2580]
shr ecx, 1
rep stosd dword es:[edi], eax
adc ecx, ecx
rep stosw word es:[edi], ax
xor eax, eax
test edx, edx
jle 0x47792a
mov ecx, ebp
and ecx, 0xffff
mov edi, dword [esp + 0x30]
xor edx, edx
mov ebp, dword [esi + eax*2]
mov dx, word [edi + eax*2]
imul edx, ecx
add ebp, edx
mov dword [esi + eax*2], ebp
mov edx, dword [esp + 0x2c]
mov esi, dword [esp + 0x54c]
inc eax
cmp eax, edx
jl 0x477905
cmp word [esi + edx*2], 0
je 0x477932
inc edx
lea eax, [esp + 0x258]
mov dword [esp + 0x548], edx
lea ecx, [esp + 0x548]
push eax
lea edx, [esp + 0x25c]
push ecx
push edx
call fcn.0047b3a0
mov edx, dword [esp + 0x38]
add esp, 0xc
mov eax, dword [esp + 0x258]
test eax, eax
jle 0x477970
dec eax
mov dword [esp + 0x258], eax
mov esi, dword [esp + 0x25c]
add esi, 2
inc ebx
cmp ebx, edx
mov dword [esp + 0x25c], esi
jl 0x477897
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x55c]
cmp word [ecx + eax*2 - 2], 0
jne 0x47799e
dec eax
mov dword [esp + 0x558], eax
lea edx, [esp + 0x12c]
lea eax, [esp + 0x558]
push edx
push eax
call fcn.0047b200
add esp, 8
jmp 0x4779c6
mov dword [esp + 0x12c], eax
lea edx, [esp + 0x2b8]
lea esi, [esp + 0x2b8]
lea ecx, [esp + 0xbd38]
mov dword [esp + 0x1c], esi
test edx, edx
mov dword [esp + 0x34c], ecx
jne 0x477a03
lea eax, [esp + 0xbe3c]
lea esi, [esp + 0x7b4]
mov dword [esp + 0x7b8], eax
mov dword [esp + 0x1c], esi
mov eax, dword [esp + 0x12c]
xor edi, edi
cmp eax, edi
jne 0x477a1e
mov dword [esp + 0x348], edi
mov dword [esi], edi
jmp 0x478ca1
cmp dword [esp + 0x10], 1
jne 0x477a4e
mov ecx, dword [esp + 0x14]
cmp word [ecx], 1
jne 0x477a4e
lea edx, [esp + 0x348]
lea eax, [esp + 0x12c]
push edx
push eax
call fcn.0047b200
add esp, 8
mov dword [esi], edi
jmp 0x478ca1
lea ecx, [esp + 0x10]
lea edx, [esp + 0x12c]
push ecx
push edx
call fcn.0047b240
add esp, 8
test eax, eax
jge 0x477a84
mov dword [esp + 0x348], edi
lea eax, [esp + 0x12c]
push esi
push eax
call fcn.0047b200
add esp, 8
jmp 0x478ca1
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
mov ax, word [edx + ecx*2 - 2]
xor ecx, ecx
cmp ax, di
mov dword [esp + 0x18], eax
je 0x477aa5
shr ax, 1
inc ecx
cmp ax, di
jne 0x477a9c
mov esi, 0x10
lea edx, [esp + 0x7d2c]
sub esi, ecx
lea ecx, [esp + 0x780c]
mov dword [esp + 0x24], esi
mov dword [esp + 0x6f0], ecx
mov dword [esp + 0x1b4], edx
jne 0x477afa
lea eax, [esp + 0x6ec]
lea ecx, [esp + 0x12c]
push eax
push ecx
call fcn.0047b200
lea edx, [esp + 0x1b8]
lea eax, [esp + 0x18]
push edx
push eax
call fcn.0047b200
add esp, 0x10
jmp 0x477b26
lea ecx, [esp + 0x6ec]
push esi
lea edx, [esp + 0x130]
push ecx
push edx
call fcn.0047b290
lea eax, [esp + 0x1bc]
push esi
lea ecx, [esp + 0x20]
push eax
push ecx
call fcn.0047b290
add esp, 0x18
mov eax, dword [esp + 0x6ec]
mov edx, dword [esp + 0x1b0]
mov esi, dword [esp + 0x34c]
sub eax, edx
mov ebx, eax
mov edi, 2
lea ecx, [eax + 1]
mov eax, edx
mov edx, dword [esp + 0x6f0]
mov dword [esp + 0x348], ecx
lea esi, [esi + ecx*2 - 2]
mov dword [esp + 0xc4], eax
lea ecx, [edx + ebx*2]
mov dword [esp + 0xc8], ecx
test eax, eax
jne 0x477b7f
mov word [esi], ax
mov dword [esp + 0xc4], eax
jmp 0x477e37
cmp dword [esp + 0x1b0], 1
jne 0x477c30
cmp eax, 1
jne 0x477be0
mov edx, dword [esp + 0xc8]
xor eax, eax
xor ecx, ecx
mov ax, word [edx]
mov edx, dword [esp + 0x1b4]
mov cx, word [edx]
cdq
idiv ecx
xor edx, edx
mov word [esi], ax
mov ecx, dword [esp + 0x1b4]
imul ax, word [ecx]
mov ecx, dword [esp + 0xc8]
sub word [ecx], ax
mov eax, dword [esp + 0xc8]
cmp word [eax], dx
setne dl
mov dword [esp + 0xc4], edx
jmp 0x477e37
mov ecx, dword [esp + 0xc8]
mov edx, dword [esp + 0x1b4]
xor ebp, ebp
mov ecx, dword [ecx]
mov bp, word [edx]
mov eax, ecx
xor edx, edx
div ebp
mov word [esi], ax
mov edx, dword [esp + 0x1b4]
imul ax, word [edx]
sub ecx, eax
mov eax, dword [esp + 0xc8]
mov word [eax], cx
mov edx, dword [esp + 0xc8]
xor ecx, ecx
cmp word [edx], cx
setne cl
mov dword [esp + 0xc4], ecx
jmp 0x477e37
lea eax, [esp + 0xc4]
lea ecx, [esp + 0xc4]
push eax
push ecx
call fcn.0047b200
lea edx, [esp + 0x1b8]
lea eax, [esp + 0xcc]
push edx
push eax
call fcn.0047b240
add esp, 0x10
test eax, eax
jge 0x477c6b
mov word [esi], 0
jmp 0x477e37
mov eax, dword [esp + 0xc4]
mov ecx, dword [esp + 0x1b0]
cmp eax, ecx
jne 0x477ca3
mov ebp, dword [esp + 0x1b4]
xor edx, edx
mov dx, word [ebp + ecx*2 - 2]
mov ebp, dword [esp + 0xc8]
mov ecx, edx
xor edx, edx
mov dx, word [ebp + eax*2 - 2]
inc ecx
mov eax, edx
cdq
idiv ecx
jmp 0x477cc3
mov edx, dword [esp + 0xc8]
mov ebp, dword [esp + 0x1b4]
mov eax, dword [edx + eax*2 - 4]
xor edx, edx
mov dx, word [ebp + ecx*2 - 2]
mov ecx, edx
xor edx, edx
inc ecx
div ecx
lea edx, [esp + 0xacf8]
mov word [esi], ax
mov dword [esp + 0x40c], edx
mov edx, dword [esp + 0x1b0]
mov dword [esp + 0x408], 0
mov ax, word [esi]
test edx, edx
mov dword [esp + 0x18], eax
je 0x477dc2
test ax, ax
je 0x477dc2
cmp ax, 1
jne 0x477d29
lea eax, [esp + 0x408]
lea ecx, [esp + 0x1b0]
push eax
lea edx, [esp + 0x40c]
push ecx
push edx
call fcn.0047b3a0
add esp, 0xc
jmp 0x477dc2
lea ebp, [esp + 0x2788]
test edx, edx
mov dword [esp + 0x56c], ebp
jl 0x477d50
lea ecx, [edx + 1]
xor eax, eax
lea edi, [esp + 0x2788]
shr ecx, 1
rep stosd dword es:[edi], eax
adc ecx, ecx
rep stosw word es:[edi], ax
xor eax, eax
test edx, edx
jle 0x477d8d
mov ecx, dword [esp + 0x18]
and ecx, 0xffff
mov edi, dword [esp + 0x1b4]
xor edx, edx
mov dx, word [edi + eax*2]
mov edi, dword [ebp + eax*2]
imul edx, ecx
add edi, edx
mov dword [ebp + eax*2], edi
mov edx, dword [esp + 0x1b0]
mov ebp, dword [esp + 0x56c]
inc eax
cmp eax, edx
jl 0x477d60
cmp word [ebp + edx*2], 0
je 0x477d96
inc edx
lea eax, [esp + 0x408]
mov dword [esp + 0x568], edx
lea ecx, [esp + 0x568]
push eax
lea edx, [esp + 0x40c]
push ecx
push edx
call fcn.0047b3a0
add esp, 0xc
mov edi, 2
lea eax, [esp + 0xc4]
lea ecx, [esp + 0x408]
push eax
lea edx, [esp + 0xc8]
push ecx
push edx
call fcn.0047b4a0
lea eax, [esp + 0x1bc]
lea ecx, [esp + 0xd0]
push eax
push ecx
call fcn.0047b240
add esp, 0x14
test eax, eax
jl 0x477e37
lea edx, [esp + 0xc4]
lea eax, [esp + 0x1b0]
push edx
lea ecx, [esp + 0xc8]
push eax
push ecx
call fcn.0047b4a0
inc word [esi]
lea edx, [esp + 0x1bc]
lea eax, [esp + 0xd0]
push edx
push eax
call fcn.0047b240
add esp, 0x14
test eax, eax
jge 0x477dfb
test ebx, ebx
je 0x477ea2
mov eax, dword [esp + 0xc4]
mov ebp, dword [esp + 0xc8]
sub esi, edi
inc eax
sub ebp, edi
dec ebx
test ebx, ebx
mov dword [esp + 0xc4], eax
mov dword [esp + 0xc8], ebp
jle 0x477b6c
cmp eax, dword [esp + 0x1b0]
jge 0x477b6c
mov word [esi], 0
mov eax, dword [esp + 0xc4]
mov ebp, dword [esp + 0xc8]
sub esi, edi
inc eax
sub ebp, edi
dec ebx
mov dword [esp + 0xc4], eax
test ebx, ebx
mov dword [esp + 0xc8], ebp
jg 0x477e65
jmp 0x477b6c
mov eax, dword [esp + 0x348]
test eax, eax
jle 0x477ec4
mov ecx, dword [esp + 0x34c]
cmp word [ecx + eax*2 - 2], 0
jne 0x477ec4
dec eax
mov dword [esp + 0x348], eax
mov eax, dword [esp + 0x24]
test eax, eax
jne 0x477ee6
mov edx, dword [esp + 0x1c]
lea eax, [esp + 0xc4]
push edx
push eax
call fcn.0047b200
add esp, 8
jmp 0x478ca1
mov ecx, dword [esp + 0x1c]
push eax
push ecx
lea edx, [esp + 0xcc]
jmp 0x478c98
cmp al, 3
jne 0x478ca1
mov edx, dword [esp + 0x2c]
xor eax, eax
cmp edx, eax
je 0x478089
lea ecx, [esp + 0x2990]
mov dword [esp + 0x58c], ecx
lea ecx, [edx + edx]
cmp ecx, eax
mov dword [esp + 0x24], ecx
jle 0x477f3e
mov edx, dword [esp + 0x58c]
inc eax
cmp eax, ecx
mov word [edx + eax*2 - 2], 0
jl 0x477f27
mov edx, dword [esp + 0x2c]
lea eax, [esp + 0x2990]
xor ebx, ebx
test edx, edx
mov dword [esp + 0x26c], eax
mov dword [esp + 0x268], 0
jle 0x478054
mov ecx, dword [esp + 0x30]
test edx, edx
mov bp, word [ecx + ebx*2]
je 0x478027
test bp, bp
je 0x478027
cmp bp, 1
jne 0x477f9a
lea edx, [esp + 0x268]
lea eax, [esp + 0x2c]
push edx
lea ecx, [esp + 0x26c]
push eax
push ecx
jmp 0x47801b
lea esi, [esp + 0x2b98]
test edx, edx
mov dword [esp + 0x57c], esi
jl 0x477fc1
lea ecx, [edx + 1]
xor eax, eax
lea edi, [esp + 0x2b98]
shr ecx, 1
rep stosd dword es:[edi], eax
adc ecx, ecx
rep stosw word es:[edi], ax
xor eax, eax
test edx, edx
jle 0x477ff4
mov ecx, ebp
and ecx, 0xffff
mov edi, dword [esp + 0x30]
xor edx, edx
mov ebp, dword [esi + eax*2]
mov dx, word [edi + eax*2]
imul edx, ecx
add ebp, edx
mov dword [esi + eax*2], ebp
mov edx, dword [esp + 0x2c]
mov esi, dword [esp + 0x57c]
inc eax
cmp eax, edx
jl 0x477fcf
cmp word [esi + edx*2], 0
je 0x477ffc
inc edx
lea eax, [esp + 0x268]
mov dword [esp + 0x578], edx
lea ecx, [esp + 0x578]
push eax
lea edx, [esp + 0x26c]
push ecx
push edx
call fcn.0047b3a0
mov edx, dword [esp + 0x38]
add esp, 0xc
mov eax, dword [esp + 0x268]
test eax, eax
jle 0x47803a
dec eax
mov dword [esp + 0x268], eax
mov esi, dword [esp + 0x26c]
add esi, 2
inc ebx
cmp ebx, edx
mov dword [esp + 0x26c], esi
jl 0x477f61
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x58c]
cmp word [ecx + eax*2 - 2], 0
jne 0x478068
dec eax
mov dword [esp + 0x588], eax
lea edx, [esp + 0x12c]
lea eax, [esp + 0x588]
push edx
push eax
call fcn.0047b200
add esp, 8
jmp 0x478090
mov dword [esp + 0x12c], eax
lea edx, [esp + 0x12c]
lea esi, [esp + 0x12c]
lea ecx, [esp + 0xc044]
mov dword [esp + 0x1c], esi
test edx, edx
mov dword [esp + 0x35c], ecx
jne 0x4780cd
lea eax, [esp + 0xc148]
lea esi, [esp + 0x7c4]
mov dword [esp + 0x7c8], eax
mov dword [esp + 0x1c], esi
mov eax, dword [esp + 0x12c]
xor edi, edi
cmp eax, edi
jne 0x4780e8
mov dword [esp + 0x358], edi
mov dword [esi], edi
jmp 0x4785c9
cmp dword [esp + 0x10], 1
jne 0x478118
mov ecx, dword [esp + 0x14]
cmp word [ecx], 1
jne 0x478118
lea edx, [esp + 0x358]
lea eax, [esp + 0x12c]
push edx
push eax
call fcn.0047b200
add esp, 8
mov dword [esi], edi
jmp 0x4785c9
lea ecx, [esp + 0x10]
lea edx, [esp + 0x12c]
push ecx
push edx
call fcn.0047b240
add esp, 8
test eax, eax
jge 0x47814e
lea eax, [esp + 0x12c]
push esi
push eax
mov dword [esp + 0x360], edi
call fcn.0047b200
add esp, 8
jmp 0x4785c9
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
mov ax, word [edx + ecx*2 - 2]
xor ecx, ecx
cmp ax, di
mov dword [esp + 0x18], eax
je 0x47816f
shr ax, 1
inc ecx
cmp ax, di
jne 0x478166
mov esi, 0x10
lea edx, [esp + 0x7f38]
sub esi, ecx
lea ecx, [esp + 0x7a18]
mov dword [esp + 0x24], esi
mov dword [esp + 0x700], ecx
mov dword [esp + 0x1c4], edx
jne 0x4781c4
lea eax, [esp + 0x6fc]
lea ecx, [esp + 0x12c]
push eax
push ecx
call fcn.0047b200
lea edx, [esp + 0x1c8]
lea eax, [esp + 0x18]
push edx
push eax
call fcn.0047b200
add esp, 0x10
jmp 0x4781f0
lea ecx, [esp + 0x6fc]
push esi
lea edx, [esp + 0x130]
push ecx
push edx
call fcn.0047b290
lea eax, [esp + 0x1cc]
push esi
lea ecx, [esp + 0x20]
push eax
push ecx
call fcn.0047b290
add esp, 0x18
mov eax, dword [esp + 0x6fc]
mov edx, dword [esp + 0x1c0]
mov esi, dword [esp + 0x35c]
sub eax, edx
mov ebx, eax
mov edi, 2
lea ecx, [eax + 1]
mov eax, edx
mov edx, dword [esp + 0x700]
mov dword [esp + 0x358], ecx
lea esi, [esi + ecx*2 - 2]
mov dword [esp + 0xd4], eax
lea ecx, [edx + ebx*2]
mov dword [esp + 0xd8], ecx
test eax, eax
jne 0x478249
mov word [esi], ax
mov dword [esp + 0xd4], eax
jmp 0x478507
cmp dword [esp + 0x1c0], 1
jne 0x478300
cmp eax, 1
jne 0x4782ad
mov edx, dword [esp + 0xd8]
xor eax, eax
xor ecx, ecx
mov ax, word [edx]
mov edx, dword [esp + 0x1c4]
mov cx, word [edx]
cdq
idiv ecx
mov word [esi], ax
mov ecx, dword [esp + 0x1c4]
mov dx, word [ecx]
imul dx, ax
mov eax, dword [esp + 0xd8]
sub word [eax], dx
mov ecx, dword [esp + 0xd8]
xor eax, eax
cmp word [ecx], ax
setne al
mov dword [esp + 0xd4], eax
jmp 0x478507
mov edx, dword [esp + 0xd8]
mov eax, dword [esp + 0x1c4]
xor ebp, ebp
mov ecx, dword [edx]
mov bp, word [eax]
mov eax, ecx
xor edx, edx
div ebp
mov word [esi], ax
mov edx, dword [esp + 0x1c4]
mov dx, word [edx]
imul dx, ax
mov eax, dword [esp + 0xd8]
sub ecx, edx
mov word [eax], cx
mov edx, dword [esp + 0xd8]
xor ecx, ecx
cmp word [edx], cx
setne cl
mov dword [esp + 0xd4], ecx
jmp 0x478507
lea eax, [esp + 0xd4]
lea ecx, [esp + 0xd4]
push eax
push ecx
call fcn.0047b200
lea edx, [esp + 0x1c8]
lea eax, [esp + 0xdc]
push edx
push eax
call fcn.0047b240
add esp, 0x10
test eax, eax
jge 0x47833b
mov word [esi], 0
jmp 0x478507
mov eax, dword [esp + 0xd4]
mov ecx, dword [esp + 0x1c0]
cmp eax, ecx
jne 0x478373
mov ebp, dword [esp + 0x1c4]
xor edx, edx
mov dx, word [ebp + ecx*2 - 2]
mov ebp, dword [esp + 0xd8]
mov ecx, edx
xor edx, edx
mov dx, word [ebp + eax*2 - 2]
inc ecx
mov eax, edx
cdq
idiv ecx
jmp 0x478393
mov edx, dword [esp + 0xd8]
mov ebp, dword [esp + 0x1c4]
mov eax, dword [edx + eax*2 - 4]
xor edx, edx
mov dx, word [ebp + ecx*2 - 2]
mov ecx, edx
xor edx, edx
inc ecx
div ecx
lea edx, [esp + 0xd494]
mov word [esi], ax
mov dword [esp + 0x41c], edx
mov edx, dword [esp + 0x1c0]
mov dword [esp + 0x418], 0
mov ax, word [esi]
test edx, edx
mov dword [esp + 0x18], eax
je 0x478492
test ax, ax
je 0x478492
cmp ax, 1
jne 0x4783f9
lea eax, [esp + 0x418]
lea ecx, [esp + 0x1c0]
push eax
lea edx, [esp + 0x41c]
push ecx
push edx
call fcn.0047b3a0
add esp, 0xc
jmp 0x478492
lea ebp, [esp + 0x2da0]
test edx, edx
mov dword [esp + 0x59c], ebp
jl 0x478420
lea ecx, [edx + 1]
xor eax, eax
lea edi, [esp + 0x2da0]
shr ecx, 1
rep stosd dword es:[edi], eax
adc ecx, ecx
rep stosw word es:[edi], ax
xor eax, eax
test edx, edx
jle 0x47845d
mov ecx, dword [esp + 0x18]
and ecx, 0xffff
mov edi, dword [esp + 0x1c4]
xor edx, edx
mov dx, word [edi + eax*2]
mov edi, dword [ebp + eax*2]
imul edx, ecx
add edi, edx
mov dword [ebp + eax*2], edi
mov edx, dword [esp + 0x1c0]
mov ebp, dword [esp + 0x59c]
inc eax
cmp eax, edx
jl 0x478430
cmp word [ebp + edx*2], 0
je 0x478466
inc edx
lea eax, [esp + 0x418]
mov dword [esp + 0x598], edx
lea ecx, [esp + 0x598]
push eax
lea edx, [esp + 0x41c]
push ecx
push edx
call fcn.0047b3a0
add esp, 0xc
mov edi, 2
lea eax, [esp + 0xd4]
lea ecx, [esp + 0x418]
push eax
lea edx, [esp + 0xd8]
push ecx
push edx
call fcn.0047b4a0
lea eax, [esp + 0x1cc]
lea ecx, [esp + 0xe0]
push eax
push ecx
call fcn.0047b240
add esp, 0x14
test eax, eax
jl 0x478507
lea edx, [esp + 0xd4]
lea eax, [esp + 0x1c0]
push edx
lea ecx, [esp + 0xd8]
push eax
push ecx
call fcn.0047b4a0
inc word [esi]
lea edx, [esp + 0x1cc]
lea eax, [esp + 0xe0]
push edx
push eax
call fcn.0047b240
add esp, 0x14
test eax, eax
jge 0x4784cb
test ebx, ebx
je 0x478572
mov eax, dword [esp + 0xd4]
mov ebp, dword [esp + 0xd8]
sub esi, edi
inc eax
sub ebp, edi
dec ebx
test ebx, ebx
mov dword [esp + 0xd4], eax
mov dword [esp + 0xd8], ebp
jle 0x478236
cmp eax, dword [esp + 0x1c0]
jge 0x478236
mov word [esi], 0
mov eax, dword [esp + 0xd4]
mov ebp, dword [esp + 0xd8]
sub esi, edi
inc eax
sub ebp, edi
dec ebx
mov dword [esp + 0xd4], eax
test ebx, ebx
mov dword [esp + 0xd8], ebp
jg 0x478535
jmp 0x478236
mov eax, dword [esp + 0x358]
test eax, eax
jle 0x478594
mov ecx, dword [esp + 0x35c]
cmp word [ecx + eax*2 - 2], 0
jne 0x478594
dec eax
mov dword [esp + 0x358], eax
mov eax, dword [esp + 0x24]
test eax, eax
jne 0x4785b3
mov edx, dword [esp + 0x1c]
lea eax, [esp + 0xd4]
push edx
push eax
call fcn.0047b200
add esp, 8
jmp 0x4785c9
mov ecx, dword [esp + 0x1c]
push eax
lea edx, [esp + 0xd8]
push ecx
push edx
call fcn.0047b310
add esp, 0xc
mov edx, dword [esp + 0x12c]
xor eax, eax
cmp edx, eax
je 0x478785
mov ecx, dword [esp + 0x2c]
cmp ecx, eax
je 0x478785
lea esi, [esp + 0x2fa8]
mov dword [esp + 0x5b8], esi
lea esi, [edx + ecx]
cmp esi, eax
mov dword [esp + 0x1c], esi
jle 0x47861f
mov ecx, esi
mov edx, dword [esp + 0x5b8]
inc eax
cmp eax, ecx
mov word [edx + eax*2 - 2], 0
jl 0x478601
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x12c]
cmp edx, ecx
jl 0x478630
lea esi, [esp + 0x12c]
lea ebp, [esp + 0x2c]
jmp 0x47863b
lea esi, [esp + 0x2c]
lea ebp, [esp + 0x12c]
lea eax, [esp + 0x2fa8]
xor ebx, ebx
mov dword [esp + 0x27c], eax
mov dword [esp + 0x278], ebx
mov eax, dword [ebp]
mov dword [esp + 0x24], ebp
cmp eax, ebx
jle 0x478750
mov ecx, dword [ebp + 4]
mov eax, dword [esi]
test eax, eax
mov di, word [ecx + ebx*2]
je 0x478720
test di, di
je 0x478720
cmp di, 1
jne 0x47868f
lea edx, [esp + 0x278]
push edx
push esi
jmp 0x478710
lea edx, [esp + 0x31b0]
xor eax, eax
mov dword [esp + 0x5ac], edx
mov ecx, dword [esi]
test ecx, ecx
jl 0x4786b9
lea ecx, [esp + 0x31b0]
mov word [ecx], 0
inc eax
add ecx, 2
cmp eax, dword [esi]
jle 0x4786ac
mov ecx, dword [esi]
xor eax, eax
test ecx, ecx
jle 0x4786ef
mov ecx, edi
and ecx, 0xffff
mov edi, dword [esi + 4]
xor ebp, ebp
mov bp, word [edi + eax*2]
mov edi, dword [edx + eax*2]
imul ebp, ecx
add edi, ebp
mov dword [edx + eax*2], edi
mov edx, dword [esi]
inc eax
cmp eax, edx
mov edx, dword [esp + 0x5ac]
jl 0x4786c9
mov ebp, dword [esp + 0x24]
mov eax, dword [esi]
cmp word [edx + eax*2], 0
je 0x4786f9
inc eax
lea ecx, [esp + 0x278]
lea edx, [esp + 0x5a8]
push ecx
mov dword [esp + 0x5ac], eax
push edx
lea eax, [esp + 0x280]
push eax
call fcn.0047b3a0
add esp, 0xc
mov eax, dword [esp + 0x278]
test eax, eax
jle 0x478733
dec eax
mov dword [esp + 0x278], eax
mov edx, dword [esp + 0x27c]
add edx, 2
inc ebx
mov dword [esp + 0x27c], edx
mov eax, dword [ebp]
cmp ebx, eax
jl 0x478661
mov ecx, dword [esp + 0x5b8]
mov eax, dword [esp + 0x1c]
cmp word [ecx + eax*2 - 2], 0
jne 0x478764
dec eax
mov dword [esp + 0x5b4], eax
lea edx, [esp + 0x12c]
lea eax, [esp + 0x5b4]
push edx
push eax
call fcn.0047b200
add esp, 8
jmp 0x47878c
mov dword [esp + 0x12c], eax
lea edx, [esp + 0x2c0]
lea esi, [esp + 0x2c0]
lea ecx, [esp + 0xc350]
mov dword [esp + 0x1c], esi
test edx, edx
mov dword [esp + 0x36c], ecx
jne 0x4787c9
lea eax, [esp + 0xc454]
lea esi, [esp + 0x7d4]
mov dword [esp + 0x7d8], eax
mov dword [esp + 0x1c], esi
mov eax, dword [esp + 0x12c]
xor edi, edi
cmp eax, edi
jne 0x4787e4
mov dword [esp + 0x368], edi
mov dword [esi], edi
jmp 0x478ca1
cmp dword [esp + 0x10], 1
jne 0x478801
mov ecx, dword [esp + 0x14]
cmp word [ecx], 1
jne 0x478801
lea edx, [esp + 0x368]
jmp 0x477a36
lea ecx, [esp + 0x10]
lea edx, [esp + 0x12c]
push ecx
push edx
call fcn.0047b240
add esp, 8
test eax, eax
jge 0x478826
mov dword [esp + 0x368], edi
jmp 0x477a6e
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
mov ax, word [edx + ecx*2 - 2]
xor ecx, ecx
cmp ax, di
mov dword [esp + 0x18], eax
je 0x478847
shr ax, 1
inc ecx
cmp ax, di
jne 0x47883e
mov esi, 0x10
lea edx, [esp + 0x8144]
sub esi, ecx
lea ecx, [esp + 0x7c24]
mov dword [esp + 0x24], esi
mov dword [esp + 0x730], ecx
mov dword [esp + 0x1d4], edx
jne 0x47889c
lea eax, [esp + 0x72c]
lea ecx, [esp + 0x12c]
push eax
push ecx
call fcn.0047b200
lea edx, [esp + 0x1d8]
lea eax, [esp + 0x18]
push edx
push eax
call fcn.0047b200
add esp, 0x10
jmp 0x4788c8
lea ecx, [esp + 0x72c]
push esi
lea edx, [esp + 0x130]
push ecx
push edx
call fcn.0047b290
lea eax, [esp + 0x1dc]
push esi
lea ecx, [esp + 0x20]
push eax
push ecx
call fcn.0047b290
add esp, 0x18
mov eax, dword [esp + 0x72c]
mov edx, dword [esp + 0x1d0]
mov esi, dword [esp + 0x36c]
sub eax, edx
mov ebx, eax
mov edi, 2
lea ecx, [eax + 1]
mov eax, edx
mov edx, dword [esp + 0x730]
mov dword [esp + 0x368], ecx
lea esi, [esi + ecx*2 - 2]
mov dword [esp + 0xe4], eax
lea ecx, [edx + ebx*2]
mov dword [esp + 0xe8], ecx
test eax, eax
jne 0x478921
mov word [esi], ax
mov dword [esp + 0xe4], eax
jmp 0x478bdf
cmp dword [esp + 0x1d0], 1
jne 0x4789d8
cmp eax, 1
jne 0x478985
mov edx, dword [esp + 0xe8]
xor eax, eax
xor ecx, ecx
mov ax, word [edx]
mov edx, dword [esp + 0x1d4]
mov cx, word [edx]
cdq
idiv ecx
mov word [esi], ax
mov ecx, dword [esp + 0x1d4]
mov dx, word [ecx]
imul dx, ax
mov eax, dword [esp + 0xe8]
sub word [eax], dx
mov ecx, dword [esp + 0xe8]
xor eax, eax
cmp word [ecx], ax
setne al
mov dword [esp + 0xe4], eax
jmp 0x478bdf
mov edx, dword [esp + 0xe8]
mov eax, dword [esp + 0x1d4]
xor ebp, ebp
mov ecx, dword [edx]
mov bp, word [eax]
mov eax, ecx
xor edx, edx
div ebp
mov word [esi], ax
mov edx, dword [esp + 0x1d4]
mov dx, word [edx]
imul dx, ax
mov eax, dword [esp + 0xe8]
sub ecx, edx
mov word [eax], cx
mov edx, dword [esp + 0xe8]
xor ecx, ecx
cmp word [edx], cx
setne cl
mov dword [esp + 0xe4], ecx
jmp 0x478bdf
lea eax, [esp + 0xe4]
lea ecx, [esp + 0xe4]
push eax
push ecx
call fcn.0047b200
lea edx, [esp + 0x1d8]
lea eax, [esp + 0xec]
push edx
push eax
call fcn.0047b240
add esp, 0x10
test eax, eax
jge 0x478a13
mov word [esi], 0
jmp 0x478bdf
mov eax, dword [esp + 0xe4]
mov ecx, dword [esp + 0x1d0]
cmp eax, ecx
jne 0x478a4b
mov ebp, dword [esp + 0x1d4]
xor edx, edx
mov dx, word [ebp + ecx*2 - 2]
mov ebp, dword [esp + 0xe8]
mov ecx, edx
xor edx, edx
mov dx, word [ebp + eax*2 - 2]
inc ecx
mov eax, edx
cdq
idiv ecx
jmp 0x478a6b
mov edx, dword [esp + 0xe8]
mov ebp, dword [esp + 0x1d4]
mov eax, dword [edx + eax*2 - 4]
xor edx, edx
mov dx, word [ebp + ecx*2 - 2]
mov ecx, edx
xor edx, edx
inc ecx
div ecx
lea edx, [esp + 0xb004]
mov word [esi], ax
mov dword [esp + 0x42c], edx
mov edx, dword [esp + 0x1d0]
mov dword [esp + 0x428], 0
mov ax, word [esi]
test edx, edx
mov dword [esp + 0x18], eax
je 0x478b6a
test ax, ax
je 0x478b6a
cmp ax, 1
jne 0x478ad1
lea eax, [esp + 0x428]
lea ecx, [esp + 0x1d0]
push eax
lea edx, [esp + 0x42c]
push ecx
push edx
call fcn.0047b3a0
add esp, 0xc
jmp 0x478b6a
lea ebp, [esp + 0x33b8]
test edx, edx
mov dword [esp + 0x5c8], ebp
jl 0x478af8
lea ecx, [edx + 1]
xor eax, eax
lea edi, [esp + 0x33b8]
shr ecx, 1
rep stosd dword es:[edi], eax
adc ecx, ecx
rep stosw word es:[edi], ax
xor eax, eax
test edx, edx
jle 0x478b35
mov ecx, dword [esp + 0x18]
and ecx, 0xffff
mov edi, dword [esp + 0x1d4]
xor edx, edx
mov dx, word [edi + eax*2]
mov edi, dword [ebp + eax*2]
imul edx, ecx
add edi, edx
mov dword [ebp + eax*2], edi
mov edx, dword [esp + 0x1d0]
mov ebp, dword [esp + 0x5c8]
inc eax
cmp eax, edx
jl 0x478b08
cmp word [ebp + edx*2], 0
je 0x478b3e
inc edx
lea eax, [esp + 0x428]
mov dword [esp + 0x5c4], edx
lea ecx, [esp + 0x5c4]
push eax
lea edx, [esp + 0x42c]
push ecx
push edx
call fcn.0047b3a0
add esp, 0xc
mov edi, 2
lea eax, [esp + 0xe4]
lea ecx, [esp + 0x428]
push eax
lea edx, [esp + 0xe8]
push ecx
push edx
call fcn.0047b4a0
lea eax, [esp + 0x1dc]
lea ecx, [esp + 0xf0]
push eax
push ecx
call fcn.0047b240
add esp, 0x14
test eax, eax
jl 0x478bdf
lea edx, [esp + 0xe4]
lea eax, [esp + 0x1d0]
push edx
lea ecx, [esp + 0xe8]
push eax
push ecx
call fcn.0047b4a0
inc word [esi]
lea edx, [esp + 0x1dc]
lea eax, [esp + 0xf0]
push edx
push eax
call fcn.0047b240
add esp, 0x14
test eax, eax
jge 0x478ba3
test ebx, ebx
je 0x478c4a
mov eax, dword [esp + 0xe4]
mov ebp, dword [esp + 0xe8]
sub esi, edi
inc eax
sub ebp, edi
dec ebx
test ebx, ebx
mov dword [esp + 0xe4], eax
mov dword [esp + 0xe8], ebp
jle 0x47890e
cmp eax, dword [esp + 0x1d0]
jge 0x47890e
mov word [esi], 0
mov eax, dword [esp + 0xe4]
mov ebp, dword [esp + 0xe8]
sub esi, edi
inc eax
sub ebp, edi
dec ebx
mov dword [esp + 0xe4], eax
test ebx, ebx
mov dword [esp + 0xe8], ebp
jg 0x478c0d
jmp 0x47890e
mov eax, dword [esp + 0x368]
test eax, eax
jle 0x478c6c
mov ecx, dword [esp + 0x36c]
cmp word [ecx + eax*2 - 2], 0
jne 0x478c6c
dec eax
mov dword [esp + 0x368], eax
mov eax, dword [esp + 0x24]
test eax, eax
jne 0x478c8b
mov edx, dword [esp + 0x1c]
lea eax, [esp + 0xe4]
push edx
push eax
call fcn.0047b200
add esp, 8
jmp 0x478ca1
mov ecx, dword [esp + 0x1c]
push eax
push ecx
lea edx, [esp + 0xec]
push edx
call fcn.0047b310
add esp, 0xc
mov al, byte [esp + 0x3c0]
test al, al
je 0x479376
mov ecx, dword [esp + 0x4c]
test ecx, ecx
je 0x478e61
mov eax, dword [esp + 0x28]
cmp dword [eax], 0
je 0x478e61
lea edx, [esp + 0x35c0]
mov dword [esp + 0x5e8], edx
mov edi, dword [eax]
mov edx, ecx
xor eax, eax
add edx, edi
test edx, edx
mov dword [esp + 0x1c], edx
jle 0x478d00
mov ecx, edx
mov edx, dword [esp + 0x5e8]
inc eax
cmp eax, ecx
mov word [edx + eax*2 - 2], 0
jl 0x478ce9
mov ecx, dword [esp + 0x4c]
mov eax, dword [esp + 0x28]
cmp ecx, dword [eax]
jl 0x478d10
lea esi, [esp + 0x4c]
mov ebp, eax
jmp 0x478d16
mov esi, eax
lea ebp, [esp + 0x4c]
lea eax, [esp + 0x35c0]
mov dword [esp + 0x288], 0
mov dword [esp + 0x28c], eax
mov eax, dword [ebp]
xor ebx, ebx
mov dword [esp + 0x24], ebp
test eax, eax
jle 0x478e2f
mov ecx, dword [ebp + 4]
mov eax, dword [esi]
test eax, eax
mov di, word [ecx + ebx*2]
je 0x478dff
test di, di
je 0x478dff
cmp di, 1
jne 0x478d6e
lea edx, [esp + 0x288]
push edx
push esi
jmp 0x478def
lea edx, [esp + 0x37c8]
xor eax, eax
mov dword [esp + 0x5d8], edx
mov ecx, dword [esi]
test ecx, ecx
jl 0x478d98
lea ecx, [esp + 0x37c8]
mov word [ecx], 0
inc eax
add ecx, 2
cmp eax, dword [esi]
jle 0x478d8b
mov ecx, dword [esi]
xor eax, eax
test ecx, ecx
jle 0x478dce
mov ecx, edi
and ecx, 0xffff
mov edi, dword [esi + 4]
xor ebp, ebp
mov bp, word [edi + eax*2]
mov edi, dword [edx + eax*2]
imul ebp, ecx
add edi, ebp
mov dword [edx + eax*2], edi
mov edx, dword [esi]
inc eax
cmp eax, edx
mov edx, dword [esp + 0x5d8]
jl 0x478da8
mov ebp, dword [esp + 0x24]
mov eax, dword [esi]
cmp word [edx + eax*2], 0
je 0x478dd8
inc eax
lea ecx, [esp + 0x288]
lea edx, [esp + 0x5d4]
push ecx
mov dword [esp + 0x5d8], eax
push edx
lea eax, [esp + 0x290]
push eax
call fcn.0047b3a0
add esp, 0xc
mov eax, dword [esp + 0x288]
test eax, eax
jle 0x478e12
dec eax
mov dword [esp + 0x288], eax
mov edx, dword [esp + 0x28c]
add edx, 2
inc ebx
mov dword [esp + 0x28c], edx
mov eax, dword [ebp]
cmp ebx, eax
jl 0x478d40
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x5e8]
cmp word [ecx + eax*2 - 2], 0
jne 0x478e43
dec eax
mov dword [esp + 0x5e4], eax
lea edx, [esp + 0x4c]
lea eax, [esp + 0x5e4]
push edx
push eax
call fcn.0047b200
add esp, 8
jmp 0x478e69
mov dword [esp + 0x4c], 0
lea edx, [esp + 0x4c]
lea esi, [esp + 0x4c]
lea ecx, [esp + 0xc65c]
mov dword [esp + 0x1c], esi
test edx, edx
mov dword [esp + 0x37c], ecx
jne 0x478ea0
lea eax, [esp + 0xc760]
lea esi, [esp + 0x7e4]
mov dword [esp + 0x7e8], eax
mov dword [esp + 0x1c], esi
mov eax, dword [esp + 0x4c]
xor edi, edi
cmp eax, edi
jne 0x478eb8
mov dword [esp + 0x378], edi
mov dword [esi], edi
jmp 0x479388
cmp dword [esp + 0x10], 1
jne 0x478ee5
mov ecx, dword [esp + 0x14]
cmp word [ecx], 1
jne 0x478ee5
lea edx, [esp + 0x378]
lea eax, [esp + 0x4c]
push edx
push eax
call fcn.0047b200
add esp, 8
mov dword [esi], edi
jmp 0x479388
lea ecx, [esp + 0x10]
lea edx, [esp + 0x4c]
push ecx
push edx
call fcn.0047b240
add esp, 8
test eax, eax
jge 0x478f0d
lea eax, [esp + 0x4c]
push esi
mov dword [esp + 0x37c], edi
push eax
jmp 0x479380
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
mov ax, word [edx + ecx*2 - 2]
xor ecx, ecx
cmp ax, di
mov dword [esp + 0x18], eax
je 0x478f2e
shr ax, 1
inc ecx
cmp ax, di
jne 0x478f25
mov esi, 0x10
lea edx, [esp + 0x8350]
sub esi, ecx
lea ecx, [esp + 0x7e30]
mov dword [esp + 0x24], esi
mov dword [esp + 0x740], ecx
mov dword [esp + 0x1e4], edx
jne 0x478f80
lea eax, [esp + 0x73c]
lea ecx, [esp + 0x4c]
push eax
push ecx
call fcn.0047b200
lea edx, [esp + 0x1e8]
lea eax, [esp + 0x18]
push edx
push eax
call fcn.0047b200
add esp, 0x10
jmp 0x478fa9
lea ecx, [esp + 0x73c]
push esi
lea edx, [esp + 0x50]
push ecx
push edx
call fcn.0047b290
lea eax, [esp + 0x1ec]
push esi
lea ecx, [esp + 0x20]
push eax
push ecx
call fcn.0047b290
add esp, 0x18
mov eax, dword [esp + 0x73c]
mov edx, dword [esp + 0x1e0]
mov esi, dword [esp + 0x37c]
sub eax, edx
mov ebx, eax
mov edi, 2
lea ecx, [eax + 1]
mov eax, edx
mov edx, dword [esp + 0x740]
mov dword [esp + 0x378], ecx
lea esi, [esi + ecx*2 - 2]
mov dword [esp + 0xf4], eax
lea ecx, [edx + ebx*2]
mov dword [esp + 0xf8], ecx
test eax, eax
jne 0x479002
mov word [esi], ax
mov dword [esp + 0xf4], eax
jmp 0x4792ba
cmp dword [esp + 0x1e0], 1
jne 0x4790b3
cmp eax, 1
jne 0x479063
mov edx, dword [esp + 0xf8]
xor eax, eax
xor ecx, ecx
mov ax, word [edx]
mov edx, dword [esp + 0x1e4]
mov cx, word [edx]
cdq
idiv ecx
xor edx, edx
mov word [esi], ax
mov ecx, dword [esp + 0x1e4]
imul ax, word [ecx]
mov ecx, dword [esp + 0xf8]
sub word [ecx], ax
mov eax, dword [esp + 0xf8]
cmp word [eax], dx
setne dl
mov dword [esp + 0xf4], edx
jmp 0x4792ba
mov ecx, dword [esp + 0xf8]
mov edx, dword [esp + 0x1e4]
xor ebp, ebp
mov ecx, dword [ecx]
mov bp, word [edx]
mov eax, ecx
xor edx, edx
div ebp
mov word [esi], ax
mov edx, dword [esp + 0x1e4]
imul ax, word [edx]
sub ecx, eax
mov eax, dword [esp + 0xf8]
mov word [eax], cx
mov edx, dword [esp + 0xf8]
xor ecx, ecx
cmp word [edx], cx
setne cl
mov dword [esp + 0xf4], ecx
jmp 0x4792ba
lea eax, [esp + 0xf4]
lea ecx, [esp + 0xf4]
push eax
push ecx
call fcn.0047b200
lea edx, [esp + 0x1e8]
lea eax, [esp + 0xfc]
push edx
push eax
call fcn.0047b240
add esp, 0x10
test eax, eax
jge 0x4790ee
mov word [esi], 0
jmp 0x4792ba
mov eax, dword [esp + 0xf4]
mov ecx, dword [esp + 0x1e0]
cmp eax, ecx
jne 0x479126
mov ebp, dword [esp + 0x1e4]
xor edx, edx
mov dx, word [ebp + ecx*2 - 2]
mov ebp, dword [esp + 0xf8]
mov ecx, edx
xor edx, edx
mov dx, word [ebp + eax*2 - 2]
inc ecx
mov eax, edx
cdq
idiv ecx
jmp 0x479146
mov edx, dword [esp + 0xf8]
mov ebp, dword [esp + 0x1e4]
mov eax, dword [edx + eax*2 - 4]
xor edx, edx
mov dx, word [ebp + ecx*2 - 2]
mov ecx, edx
xor edx, edx
inc ecx
div ecx
lea edx, [esp + 0xc864]
mov word [esi], ax
mov dword [esp + 0x43c], edx
mov edx, dword [esp + 0x1e0]
mov dword [esp + 0x438], 0
mov ax, word [esi]
test edx, edx
mov dword [esp + 0x18], eax
je 0x479245
test ax, ax
je 0x479245
cmp ax, 1
jne 0x4791ac
lea eax, [esp + 0x438]
lea ecx, [esp + 0x1e0]
push eax
lea edx, [esp + 0x43c]
push ecx
push edx
call fcn.0047b3a0
add esp, 0xc
jmp 0x479245
lea ebp, [esp + 0x39d0]
test edx, edx
mov dword [esp + 0x5f8], ebp
jl 0x4791d3
lea ecx, [edx + 1]
xor eax, eax
lea edi, [esp + 0x39d0]
shr ecx, 1
rep stosd dword es:[edi], eax
adc ecx, ecx
rep stosw word es:[edi], ax
xor eax, eax
test edx, edx
jle 0x479210
mov ecx, dword [esp + 0x18]
and ecx, 0xffff
mov edi, dword [esp + 0x1e4]
xor edx, edx
mov dx, word [edi + eax*2]
mov edi, dword [ebp + eax*2]
imul edx, ecx
add edi, edx
mov dword [ebp + eax*2], edi
mov edx, dword [esp + 0x1e0]
mov ebp, dword [esp + 0x5f8]
inc eax
cmp eax, edx
jl 0x4791e3
cmp word [ebp + edx*2], 0
je 0x479219
inc edx
lea eax, [esp + 0x438]
mov dword [esp + 0x5f4], edx
lea ecx, [esp + 0x5f4]
push eax
lea edx, [esp + 0x43c]
push ecx
push edx
call fcn.0047b3a0
add esp, 0xc
mov edi, 2
lea eax, [esp + 0xf4]
lea ecx, [esp + 0x438]
push eax
lea edx, [esp + 0xf8]
push ecx
push edx
call fcn.0047b4a0
lea eax, [esp + 0x1ec]
lea ecx, [esp + 0x100]
push eax
push ecx
call fcn.0047b240
add esp, 0x14
test eax, eax
jl 0x4792ba
lea edx, [esp + 0xf4]
lea eax, [esp + 0x1e0]
push edx
lea ecx, [esp + 0xf8]
push eax
push ecx
call fcn.0047b4a0
inc word [esi]
lea edx, [esp + 0x1ec]
lea eax, [esp + 0x100]
push edx
push eax
call fcn.0047b240
add esp, 0x14
test eax, eax
jge 0x47927e
test ebx, ebx
je 0x479325
mov eax, dword [esp + 0xf4]
mov ebp, dword [esp + 0xf8]
sub esi, edi
inc eax
sub ebp, edi
dec ebx
test ebx, ebx
mov dword [esp + 0xf4], eax
mov dword [esp + 0xf8], ebp
jle 0x478fef
cmp eax, dword [esp + 0x1e0]
jge 0x478fef
mov word [esi], 0
mov eax, dword [esp + 0xf4]
mov ebp, dword [esp + 0xf8]
sub esi, edi
inc eax
sub ebp, edi
dec ebx
mov dword [esp + 0xf4], eax
test ebx, ebx
mov dword [esp + 0xf8], ebp
jg 0x4792e8
jmp 0x478fef
mov eax, dword [esp + 0x378]
test eax, eax
jle 0x479347
mov ecx, dword [esp + 0x37c]
cmp word [ecx + eax*2 - 2], 0
jne 0x479347
dec eax
mov dword [esp + 0x378], eax
mov eax, dword [esp + 0x24]
test eax, eax
jne 0x47935e
mov edx, dword [esp + 0x1c]
lea eax, [esp + 0xf4]
push edx
push eax
jmp 0x479380
mov ecx, dword [esp + 0x1c]
push eax
lea edx, [esp + 0xf8]
push ecx
push edx
call fcn.0047b310
add esp, 0xc
jmp 0x479388
mov ecx, dword [esp + 0x28]
lea eax, [esp + 0x4c]
push eax
push ecx
call fcn.0047b200
add esp, 8
mov edx, dword [esp + 0x20]
lea eax, [esp + 0x4c]
push edx
push eax
call fcn.0047b200
mov eax, dword [esp + 0x28]
add esp, 8
mov cl, byte [esp + 0x3ac]
test cl, cl
je 0x479a6d
mov ecx, dword [esp + 0x44]
test ecx, ecx
je 0x47955a
cmp dword [eax], 0
je 0x47955a
lea edx, [esp + 0x3bd8]
mov dword [esp + 0x618], edx
mov edi, dword [eax]
mov edx, ecx
xor eax, eax
add edx, edi
test edx, edx
mov dword [esp + 0x1c], edx
jle 0x4793f9
mov ecx, edx
mov edx, dword [esp + 0x618]
inc eax
cmp eax, ecx
mov word [edx + eax*2 - 2], 0
jl 0x4793e2
mov ecx, dword [esp + 0x44]
mov eax, dword [esp + 0x20]
cmp ecx, dword [eax]
jl 0x479409
lea esi, [esp + 0x44]
mov ebp, eax
jmp 0x47940f
mov esi, eax
lea ebp, [esp + 0x44]
lea eax, [esp + 0x3bd8]
mov dword [esp + 0x298], 0
mov dword [esp + 0x29c], eax
mov eax, dword [ebp]
xor ebx, ebx
mov dword [esp + 0x24], ebp
test eax, eax
jle 0x479528
mov ecx, dword [ebp + 4]
mov eax, dword [esi]
test eax, eax
mov di, word [ecx + ebx*2]
je 0x4794f8
test di, di
je 0x4794f8
cmp di, 1
jne 0x479467
lea edx, [esp + 0x298]
push edx
push esi
jmp 0x4794e8
lea edx, [esp + 0x3de0]
xor eax, eax
mov dword [esp + 0x608], edx
mov ecx, dword [esi]
test ecx, ecx
jl 0x479491
lea ecx, [esp + 0x3de0]
mov word [ecx], 0
inc eax
add ecx, 2
cmp eax, dword [esi]
jle 0x479484
mov ecx, dword [esi]
xor eax, eax
test ecx, ecx
jle 0x4794c7
mov ecx, edi
and ecx, 0xffff
mov edi, dword [esi + 4]
xor ebp, ebp
mov bp, word [edi + eax*2]
mov edi, dword [edx + eax*2]
imul ebp, ecx
add edi, ebp
mov dword [edx + eax*2], edi
mov edx, dword [esi]
inc eax
cmp eax, edx
mov edx, dword [esp + 0x608]
jl 0x4794a1
mov ebp, dword [esp + 0x24]
mov eax, dword [esi]
cmp word [edx + eax*2], 0
je 0x4794d1
inc eax
lea ecx, [esp + 0x298]
lea edx, [esp + 0x604]
push ecx
mov dword [esp + 0x608], eax
push edx
lea eax, [esp + 0x2a0]
push eax
call fcn.0047b3a0
add esp, 0xc
mov eax, dword [esp + 0x298]
test eax, eax
jle 0x47950b
dec eax
mov dword [esp + 0x298], eax
mov edx, dword [esp + 0x29c]
add edx, 2
inc ebx
mov dword [esp + 0x29c], edx
mov eax, dword [ebp]
cmp ebx, eax
jl 0x479439
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x618]
cmp word [ecx + eax*2 - 2], 0
jne 0x47953c
dec eax
mov dword [esp + 0x614], eax
lea edx, [esp + 0x44]
lea eax, [esp + 0x614]
push edx
push eax
call fcn.0047b200
add esp, 8
jmp 0x479562
mov dword [esp + 0x44], 0
lea edx, [esp + 0x44]
lea esi, [esp + 0x44]
lea ecx, [esp + 0xc968]
mov dword [esp + 0x20], esi
test edx, edx
mov dword [esp + 0x2d4], ecx
jne 0x479599
lea eax, [esp + 0xca6c]
lea esi, [esp + 0x7f4]
mov dword [esp + 0x7f8], eax
mov dword [esp + 0x20], esi
mov eax, dword [esp + 0x44]
xor edi, edi
cmp eax, edi
jne 0x4795b1
mov dword [esp + 0x2d0], edi
mov dword [esi], edi
jmp 0x479a7b
cmp dword [esp + 0x10], 1
jne 0x4795de
mov ecx, dword [esp + 0x14]
cmp word [ecx], 1
jne 0x4795de
lea edx, [esp + 0x2d0]
lea eax, [esp + 0x44]
push edx
push eax
call fcn.0047b200
add esp, 8
mov dword [esi], edi
jmp 0x479a7b
lea ecx, [esp + 0x10]
lea edx, [esp + 0x44]
push ecx
push edx
call fcn.0047b240
add esp, 8
test eax, eax
jge 0x479605
mov dword [esp + 0x2d0], edi
push esi
lea eax, [esp + 0x48]
jmp 0x479a72
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
mov ax, word [edx + ecx*2 - 2]
xor ecx, ecx
cmp ax, di
mov dword [esp + 0x18], eax
je 0x479626
shr ax, 1
inc ecx
cmp ax, di
jne 0x47961d
mov esi, 0x10
lea edx, [esp + 0x855c]
sub esi, ecx
lea ecx, [esp + 0x803c]
mov dword [esp + 0x24], esi
mov dword [esp + 0x750], ecx
mov dword [esp + 0x14c], edx
jne 0x479678
lea eax, [esp + 0x74c]
lea ecx, [esp + 0x44]
push eax
push ecx
call fcn.0047b200
lea edx, [esp + 0x150]
lea eax, [esp + 0x18]
push edx
push eax
call fcn.0047b200
add esp, 0x10
jmp 0x4796a1
lea ecx, [esp + 0x74c]
push esi
lea edx, [esp + 0x48]
push ecx
push edx
call fcn.0047b290
lea eax, [esp + 0x154]
push esi
lea ecx, [esp + 0x20]
push eax
push ecx
call fcn.0047b290
add esp, 0x18
mov eax, dword [esp + 0x74c]
mov edx, dword [esp + 0x148]
mov esi, dword [esp + 0x2d4]
sub eax, edx
mov ebx, eax
mov edi, 2
lea ecx, [eax + 1]
mov eax, edx
mov edx, dword [esp + 0x750]
mov dword [esp + 0x2d0], ecx
lea esi, [esi + ecx*2 - 2]
mov dword [esp + 0x104], eax
lea ecx, [edx + ebx*2]
mov dword [esp + 0x108], ecx
test eax, eax
jne 0x4796fa
mov word [esi], ax
mov dword [esp + 0x104], eax
jmp 0x4799b2
cmp dword [esp + 0x148], 1
jne 0x4797ab
cmp eax, 1
jne 0x47975b
mov edx, dword [esp + 0x108]
xor eax, eax
xor ecx, ecx
mov ax, word [edx]
mov edx, dword [esp + 0x14c]
mov cx, word [edx]
cdq
idiv ecx
xor edx, edx
mov word [esi], ax
mov ecx, dword [esp + 0x14c]
imul ax, word [ecx]
mov ecx, dword [esp + 0x108]
sub word [ecx], ax
mov eax, dword [esp + 0x108]
cmp word [eax], dx
setne dl
mov dword [esp + 0x104], edx
jmp 0x4799b2
mov ecx, dword [esp + 0x108]
mov edx, dword [esp + 0x14c]
xor ebp, ebp
mov ecx, dword [ecx]
mov bp, word [edx]
mov eax, ecx
xor edx, edx
div ebp
mov word [esi], ax
mov edx, dword [esp + 0x14c]
imul ax, word [edx]
sub ecx, eax
mov eax, dword [esp + 0x108]
mov word [eax], cx
mov edx, dword [esp + 0x108]
xor ecx, ecx
cmp word [edx], cx
setne cl
mov dword [esp + 0x104], ecx
jmp 0x4799b2
lea eax, [esp + 0x104]
lea ecx, [esp + 0x104]
push eax
push ecx
call fcn.0047b200
lea edx, [esp + 0x150]
lea eax, [esp + 0x10c]
push edx
push eax
call fcn.0047b240
add esp, 0x10
test eax, eax
jge 0x4797e6
mov word [esi], 0
jmp 0x4799b2
mov eax, dword [esp + 0x104]
mov ecx, dword [esp + 0x148]
cmp eax, ecx
jne 0x47981e
mov ebp, dword [esp + 0x14c]
xor edx, edx
mov dx, word [ebp + ecx*2 - 2]
mov ebp, dword [esp + 0x108]
mov ecx, edx
xor edx, edx
mov dx, word [ebp + eax*2 - 2]
inc ecx
mov eax, edx
cdq
idiv ecx
jmp 0x47983e
mov edx, dword [esp + 0x108]
mov ebp, dword [esp + 0x14c]
mov eax, dword [edx + eax*2 - 4]
xor edx, edx
mov dx, word [ebp + ecx*2 - 2]
mov ecx, edx
xor edx, edx
inc ecx
div ecx
lea edx, [esp + 0xb310]
mov word [esi], ax
mov dword [esp + 0x44c], edx
mov edx, dword [esp + 0x148]
mov dword [esp + 0x448], 0
mov ax, word [esi]
test edx, edx
mov dword [esp + 0x18], eax
je 0x47993d
test ax, ax
je 0x47993d
cmp ax, 1
jne 0x4798a4
lea eax, [esp + 0x448]
lea ecx, [esp + 0x148]
push eax
lea edx, [esp + 0x44c]
push ecx
push edx
call fcn.0047b3a0
add esp, 0xc
jmp 0x47993d
lea ebp, [esp + 0x3fe8]
test edx, edx
mov dword [esp + 0x628], ebp
jl 0x4798cb
lea ecx, [edx + 1]
xor eax, eax
lea edi, [esp + 0x3fe8]
shr ecx, 1
rep stosd dword es:[edi], eax
adc ecx, ecx
rep stosw word es:[edi], ax
xor eax, eax
test edx, edx
jle 0x479908
mov ecx, dword [esp + 0x18]
and ecx, 0xffff
mov edi, dword [esp + 0x14c]
xor edx, edx
mov dx, word [edi + eax*2]
mov edi, dword [ebp + eax*2]
imul edx, ecx
add edi, edx
mov dword [ebp + eax*2], edi
mov edx, dword [esp + 0x148]
mov ebp, dword [esp + 0x628]
inc eax
cmp eax, edx
jl 0x4798db
cmp word [ebp + edx*2], 0
je 0x479911
inc edx
lea eax, [esp + 0x448]
mov dword [esp + 0x624], edx
lea ecx, [esp + 0x624]
push eax
lea edx, [esp + 0x44c]
push ecx
push edx
call fcn.0047b3a0
add esp, 0xc
mov edi, 2
lea eax, [esp + 0x104]
lea ecx, [esp + 0x448]
push eax
lea edx, [esp + 0x108]
push ecx
push edx
call fcn.0047b4a0
lea eax, [esp + 0x154]
lea ecx, [esp + 0x110]
push eax
push ecx
call fcn.0047b240
add esp, 0x14
test eax, eax
jl 0x4799b2
lea edx, [esp + 0x104]
lea eax, [esp + 0x148]
push edx
lea ecx, [esp + 0x108]
push eax
push ecx
call fcn.0047b4a0
inc word [esi]
lea edx, [esp + 0x154]
lea eax, [esp + 0x110]
push edx
push eax
call fcn.0047b240
add esp, 0x14
test eax, eax
jge 0x479976
test ebx, ebx
je 0x479a1d
mov eax, dword [esp + 0x104]
mov ebp, dword [esp + 0x108]
sub esi, edi
inc eax
sub ebp, edi
dec ebx
test ebx, ebx
mov dword [esp + 0x104], eax
mov dword [esp + 0x108], ebp
jle 0x4796e7
cmp eax, dword [esp + 0x148]
jge 0x4796e7
mov word [esi], 0
mov eax, dword [esp + 0x104]
mov ebp, dword [esp + 0x108]
sub esi, edi
inc eax
sub ebp, edi
dec ebx
mov dword [esp + 0x104], eax
test ebx, ebx
mov dword [esp + 0x108], ebp
jg 0x4799e0
jmp 0x4796e7
mov eax, dword [esp + 0x2d0]
test eax, eax
jle 0x479a3f
mov ecx, dword [esp + 0x2d4]
cmp word [ecx + eax*2 - 2], 0
jne 0x479a3f
dec eax
mov dword [esp + 0x2d0], eax
mov eax, dword [esp + 0x24]
test eax, eax
jne 0x479a55
mov edx, dword [esp + 0x20]
lea eax, [esp + 0x104]
push edx
jmp 0x479a72
mov ecx, dword [esp + 0x20]
push eax
lea edx, [esp + 0x108]
push ecx
push edx
call fcn.0047b310
add esp, 0xc
jmp 0x479a7b
lea ecx, [esp + 0x44]
push ecx
push eax
call fcn.0047b200
add esp, 8
mov esi, dword [esp + 0x13c]
lea edx, [esp + 0x44]
push esi
push edx
call fcn.0047b200
mov eax, dword [esp + 0x3ac]
add esp, 8
test eax, eax
je 0x479ab9
lea eax, [esp + 0x34]
mov dword [esp + 0x3a4], 0
push eax
push esi
call fcn.0047b200
add esp, 8
jmp 0x47a863
mov dword [esp + 0x24], 8
mov edx, dword [esp + 0x34]
xor eax, eax
cmp edx, eax
je 0x479c48
lea edi, [edx + edx]
lea ecx, [esp + 0x910]
cmp edi, eax
mov dword [esp + 0x648], ecx
mov dword [esp + 0x18], edi
jle 0x479aff
mov edx, dword [esp + 0x648]
inc eax
cmp eax, edi
mov word [edx + eax*2 - 2], 0
jl 0x479ae8
mov edx, dword [esp + 0x34]
lea eax, [esp + 0x910]
xor ebx, ebx
test edx, edx
mov dword [esp + 0x2ac], eax
mov dword [esp + 0x2a8], 0
jle 0x479c1a
mov ecx, dword [esp + 0x38]
test edx, edx
mov bp, word [ecx + ebx*2]
je 0x479bed
test bp, bp
je 0x479bed
cmp bp, 1
jne 0x479b5b
lea edx, [esp + 0x2a8]
lea eax, [esp + 0x34]
push edx
lea ecx, [esp + 0x2ac]
push eax
push ecx
jmp 0x479be1
lea esi, [esp + 0x43f8]
test edx, edx
mov dword [esp + 0x638], esi
jl 0x479b86
lea ecx, [edx + 1]
xor eax, eax
lea edi, [esp + 0x43f8]
shr ecx, 1
rep stosd dword es:[edi], eax
adc ecx, ecx
rep stosw word es:[edi], ax
mov edi, dword [esp + 0x18]
xor eax, eax
test edx, edx
jle 0x479bba
mov ecx, ebp
and ecx, 0xffff
mov ebp, dword [esp + 0x38]
xor edx, edx
mov dx, word [ebp + eax*2]
mov ebp, dword [esi + eax*2]
imul edx, ecx
add ebp, edx
mov dword [esi + eax*2], ebp
mov edx, dword [esp + 0x34]
mov esi, dword [esp + 0x638]
inc eax
cmp eax, edx
jl 0x479b94
cmp word [esi + edx*2], 0
je 0x479bc2
inc edx
lea eax, [esp + 0x2a8]
mov dword [esp + 0x634], edx
lea ecx, [esp + 0x634]
push eax
lea edx, [esp + 0x2ac]
push ecx
push edx
call fcn.0047b3a0
mov edx, dword [esp + 0x40]
add esp, 0xc
mov eax, dword [esp + 0x2a8]
test eax, eax
jle 0x479c00
dec eax
mov dword [esp + 0x2a8], eax
mov esi, dword [esp + 0x2ac]
add esi, 2
inc ebx
cmp ebx, edx
mov dword [esp + 0x2ac], esi
jl 0x479b22
mov eax, dword [esp + 0x648]
cmp word [eax + edi*2 - 2], 0
jne 0x479c2a
dec edi
lea ecx, [esp + 0x34]
lea edx, [esp + 0x644]
push ecx
push edx
mov dword [esp + 0x64c], edi
call fcn.0047b200
add esp, 8
jmp 0x479c4c
mov dword [esp + 0x34], eax
lea ecx, [esp + 0x34]
lea esi, [esp + 0x34]
lea eax, [esp + 0xcc74]
mov dword [esp + 0x20], esi
test ecx, ecx
mov dword [esp + 0x38c], eax
jne 0x479c83
lea edx, [esp + 0xcd78]
lea esi, [esp + 0x804]
mov dword [esp + 0x808], edx
mov dword [esp + 0x20], esi
mov eax, dword [esp + 0x34]
xor edi, edi
cmp eax, edi
jne 0x479c9b
mov dword [esp + 0x388], edi
mov dword [esi], edi
jmp 0x47a170
cmp dword [esp + 0x10], 1
jne 0x479cc8
mov eax, dword [esp + 0x14]
cmp word [eax], 1
jne 0x479cc8
lea ecx, [esp + 0x388]
lea edx, [esp + 0x34]
push ecx
push edx
call fcn.0047b200
add esp, 8
mov dword [esi], edi
jmp 0x47a170
lea eax, [esp + 0x10]
lea ecx, [esp + 0x34]
push eax
push ecx
call fcn.0047b240
add esp, 8
test eax, eax
jge 0x479cf8
lea edx, [esp + 0x34]
push esi
push edx
mov dword [esp + 0x390], edi
call fcn.0047b200
add esp, 8
jmp 0x47a170
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
mov dx, word [ecx + eax*2 - 2]
xor ecx, ecx
mov ax, dx
mov dword [esp + 0x18], edx
cmp ax, di
je 0x479d1c
shr ax, 1
inc ecx
cmp ax, di
jne 0x479d13
mov esi, 0x10
lea eax, [esp + 0x8248]
sub esi, ecx
lea ecx, [esp + 0x8868]
mov dword [esp + 0x1c], esi
mov dword [esp + 0x760], eax
mov dword [esp + 0x154], ecx
jne 0x479d6e
lea edx, [esp + 0x75c]
lea eax, [esp + 0x34]
push edx
push eax
call fcn.0047b200
lea ecx, [esp + 0x158]
lea edx, [esp + 0x18]
push ecx
push edx
call fcn.0047b200
add esp, 0x10
jmp 0x479d97
lea eax, [esp + 0x75c]
push esi
lea ecx, [esp + 0x38]
push eax
push ecx
call fcn.0047b290
lea edx, [esp + 0x15c]
push esi
lea eax, [esp + 0x20]
push edx
push eax
call fcn.0047b290
add esp, 0x18
mov eax, dword [esp + 0x75c]
mov edx, dword [esp + 0x150]
mov esi, dword [esp + 0x38c]
sub eax, edx
mov ebx, eax
mov edi, 2
lea ecx, [eax + 1]
mov eax, edx
mov dword [esp + 0x388], ecx
mov dword [esp + 0x114], eax
lea esi, [esi + ecx*2 - 2]
mov ecx, dword [esp + 0x760]
lea edx, [ecx + ebx*2]
mov dword [esp + 0x118], edx
test eax, eax
jne 0x479df0
mov word [esi], ax
mov dword [esp + 0x114], eax
jmp 0x47a0ae
cmp dword [esp + 0x150], 1
jne 0x479ea7
cmp eax, 1
jne 0x479e54
mov ecx, dword [esp + 0x118]
mov edx, dword [esp + 0x154]
xor eax, eax
mov ax, word [ecx]
xor ecx, ecx
mov cx, word [edx]
cdq
idiv ecx
mov word [esi], ax
mov ecx, dword [esp + 0x154]
mov dx, word [ecx]
imul dx, ax
mov eax, dword [esp + 0x118]
sub word [eax], dx
mov ecx, dword [esp + 0x118]
xor eax, eax
cmp word [ecx], ax
setne al
mov dword [esp + 0x114], eax
jmp 0x47a0ae
mov edx, dword [esp + 0x118]
mov eax, dword [esp + 0x154]
xor ebp, ebp
mov ecx, dword [edx]
mov bp, word [eax]
mov eax, ecx
xor edx, edx
div ebp
mov word [esi], ax
mov edx, dword [esp + 0x154]
mov dx, word [edx]
imul dx, ax
mov eax, dword [esp + 0x118]
sub ecx, edx
mov word [eax], cx
mov edx, dword [esp + 0x118]
xor ecx, ecx
cmp word [edx], cx
setne cl
mov dword [esp + 0x114], ecx
jmp 0x47a0ae
lea eax, [esp + 0x114]
lea ecx, [esp + 0x114]
push eax
push ecx
call fcn.0047b200
lea edx, [esp + 0x158]
lea eax, [esp + 0x11c]
push edx
push eax
call fcn.0047b240
add esp, 0x10
test eax, eax
jge 0x479ee2
mov word [esi], 0
jmp 0x47a0ae
mov eax, dword [esp + 0x114]
mov ecx, dword [esp + 0x150]
cmp eax, ecx
jne 0x479f1a
mov ebp, dword [esp + 0x154]
xor edx, edx
mov dx, word [ebp + ecx*2 - 2]
mov ebp, dword [esp + 0x118]
mov ecx, edx
xor edx, edx
mov dx, word [ebp + eax*2 - 2]
inc ecx
mov eax, edx
cdq
idiv ecx
jmp 0x479f3a
mov edx, dword [esp + 0x118]
mov ebp, dword [esp + 0x154]
mov eax, dword [edx + eax*2 - 4]
xor edx, edx
mov dx, word [ebp + ecx*2 - 2]
mov ecx, edx
xor edx, edx
inc ecx
div ecx
lea edx, [esp + 0xd390]
mov word [esi], ax
mov dword [esp + 0x45c], edx
mov edx, dword [esp + 0x150]
mov dword [esp + 0x458], 0
mov ax, word [esi]
test edx, edx
mov dword [esp + 0x18], eax
je 0x47a039
test ax, ax
je 0x47a039
cmp ax, 1
jne 0x479fa0
lea eax, [esp + 0x458]
lea ecx, [esp + 0x150]
push eax
lea edx, [esp + 0x45c]
push ecx
push edx
call fcn.0047b3a0
add esp, 0xc
jmp 0x47a039
lea ebp, [esp + 0x4600]
test edx, edx
mov dword [esp + 0x658], ebp
jl 0x479fc7
lea ecx, [edx + 1]
xor eax, eax
lea edi, [esp + 0x4600]
shr ecx, 1
rep stosd dword es:[edi], eax
adc ecx, ecx
rep stosw word es:[edi], ax
xor eax, eax
test edx, edx
jle 0x47a004
mov ecx, dword [esp + 0x18]
and ecx, 0xffff
mov edi, dword [esp + 0x154]
xor edx, edx
mov dx, word [edi + eax*2]
mov edi, dword [ebp + eax*2]
imul edx, ecx
add edi, edx
mov dword [ebp + eax*2], edi
mov edx, dword [esp + 0x150]
mov ebp, dword [esp + 0x658]
inc eax
cmp eax, edx
jl 0x479fd7
cmp word [ebp + edx*2], 0
je 0x47a00d
inc edx
lea eax, [esp + 0x458]
mov dword [esp + 0x654], edx
lea ecx, [esp + 0x654]
push eax
lea edx, [esp + 0x45c]
push ecx
push edx
call fcn.0047b3a0
add esp, 0xc
mov edi, 2
lea eax, [esp + 0x114]
lea ecx, [esp + 0x458]
push eax
lea edx, [esp + 0x118]
push ecx
push edx
call fcn.0047b4a0
lea eax, [esp + 0x15c]
lea ecx, [esp + 0x120]
push eax
push ecx
call fcn.0047b240
add esp, 0x14
test eax, eax
jl 0x47a0ae
lea edx, [esp + 0x114]
lea eax, [esp + 0x150]
push edx
lea ecx, [esp + 0x118]
push eax
push ecx
call fcn.0047b4a0
inc word [esi]
lea edx, [esp + 0x15c]
lea eax, [esp + 0x120]
push edx
push eax
call fcn.0047b240
add esp, 0x14
test eax, eax
jge 0x47a072
test ebx, ebx
je 0x47a119
mov eax, dword [esp + 0x114]
mov ebp, dword [esp + 0x118]
sub esi, edi
inc eax
sub ebp, edi
dec ebx
test ebx, ebx
mov dword [esp + 0x114], eax
mov dword [esp + 0x118], ebp
jle 0x479ddd
cmp eax, dword [esp + 0x150]
jge 0x479ddd
mov word [esi], 0
mov eax, dword [esp + 0x114]
mov ebp, dword [esp + 0x118]
sub esi, edi
inc eax
sub ebp, edi
dec ebx
mov dword [esp + 0x114], eax
test ebx, ebx
mov dword [esp + 0x118], ebp
jg 0x47a0dc
jmp 0x479ddd
mov eax, dword [esp + 0x388]
test eax, eax
jle 0x47a13b
mov ecx, dword [esp + 0x38c]
cmp word [ecx + eax*2 - 2], 0
jne 0x47a13b
dec eax
mov dword [esp + 0x388], eax
mov eax, dword [esp + 0x1c]
test eax, eax
jne 0x47a15a
mov edx, dword [esp + 0x20]
lea eax, [esp + 0x114]
push edx
push eax
call fcn.0047b200
add esp, 8
jmp 0x47a170
mov ecx, dword [esp + 0x20]
push eax
lea edx, [esp + 0x118]
push ecx
push edx
call fcn.0047b310
add esp, 0xc
mov eax, dword [esp + 0x24]
dec eax
mov dword [esp + 0x24], eax
jne 0x479ac1
mov ecx, dword [esp + 0x34]
test ecx, ecx
je 0x47a334
mov eax, dword [esp + 0x13c]
cmp dword [eax], 0
je 0x47a334
lea edx, [esp + 0x4808]
mov dword [esp + 0x678], edx
mov edx, dword [eax]
add edx, ecx
xor eax, eax
test edx, edx
mov dword [esp + 0x20], edx
jle 0x47a1d0
mov ecx, edx
mov edx, dword [esp + 0x678]
inc eax
cmp eax, ecx
mov word [edx + eax*2 - 2], 0
jl 0x47a1b9
mov ecx, dword [esp + 0x34]
mov eax, dword [esp + 0x13c]
cmp ecx, dword [eax]
jl 0x47a1e3
lea esi, [esp + 0x34]
mov ebp, eax
jmp 0x47a1e9
mov esi, eax
lea ebp, [esp + 0x34]
lea eax, [esp + 0x4808]
mov dword [esp + 0x208], 0
mov dword [esp + 0x20c], eax
mov eax, dword [ebp]
xor ebx, ebx
mov dword [esp + 0x24], ebp
test eax, eax
jle 0x47a302
mov ecx, dword [ebp + 4]
mov eax, dword [esi]
test eax, eax
mov di, word [ecx + ebx*2]
je 0x47a2d2
test di, di
je 0x47a2d2
cmp di, 1
jne 0x47a241
lea edx, [esp + 0x208]
push edx
push esi
jmp 0x47a2c2
lea edx, [esp + 0x4a10]
xor eax, eax
mov dword [esp + 0x668], edx
mov ecx, dword [esi]
test ecx, ecx
jl 0x47a26b
lea ecx, [esp + 0x4a10]
mov word [ecx], 0
inc eax
add ecx, 2
cmp eax, dword [esi]
jle 0x47a25e
mov ecx, dword [esi]
xor eax, eax
test ecx, ecx
jle 0x47a2a1
mov ecx, edi
and ecx, 0xffff
mov edi, dword [esi + 4]
xor ebp, ebp
mov bp, word [edi + eax*2]
mov edi, dword [edx + eax*2]
imul ebp, ecx
add edi, ebp
mov dword [edx + eax*2], edi
mov edx, dword [esi]
inc eax
cmp eax, edx
mov edx, dword [esp + 0x668]
jl 0x47a27b
mov ebp, dword [esp + 0x24]
mov eax, dword [esi]
cmp word [edx + eax*2], 0
je 0x47a2ab
inc eax
lea ecx, [esp + 0x208]
lea edx, [esp + 0x664]
push ecx
mov dword [esp + 0x668], eax
push edx
lea eax, [esp + 0x210]
push eax
call fcn.0047b3a0
add esp, 0xc
mov eax, dword [esp + 0x208]
test eax, eax
jle 0x47a2e5
dec eax
mov dword [esp + 0x208], eax
mov edx, dword [esp + 0x20c]
add edx, 2
inc ebx
mov dword [esp + 0x20c], edx
mov eax, dword [ebp]
cmp ebx, eax
jl 0x47a213
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x678]
cmp word [ecx + eax*2 - 2], 0
jne 0x47a316
dec eax
mov dword [esp + 0x674], eax
lea edx, [esp + 0x34]
lea eax, [esp + 0x674]
push edx
push eax
call fcn.0047b200
add esp, 8
jmp 0x47a33c
mov dword [esp + 0x34], 0
lea edx, [esp + 0x34]
lea esi, [esp + 0x34]
lea ecx, [esp + 0xcf80]
mov dword [esp + 0x13c], esi
test edx, edx
mov dword [esp + 0x2e4], ecx
jne 0x47a379
lea eax, [esp + 0xd084]
lea esi, [esp + 0x814]
mov dword [esp + 0x818], eax
mov dword [esp + 0x13c], esi
mov eax, dword [esp + 0x34]
xor edi, edi
cmp eax, edi
jne 0x47a391
mov dword [esp + 0x2e0], edi
mov dword [esi], edi
jmp 0x47a863
cmp dword [esp + 0x10], 1
jne 0x47a3be
mov ecx, dword [esp + 0x14]
cmp word [ecx], 1
jne 0x47a3be
lea edx, [esp + 0x2e0]
lea eax, [esp + 0x34]
push edx
push eax
call fcn.0047b200
add esp, 8
mov dword [esi], edi
jmp 0x47a863
lea ecx, [esp + 0x10]
lea edx, [esp + 0x34]
push ecx
push edx
call fcn.0047b240
add esp, 8
test eax, eax
jge 0x47a3ee
lea eax, [esp + 0x34]
push esi
push eax
mov dword [esp + 0x2e8], edi
call fcn.0047b200
add esp, 8
jmp 0x47a863
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
mov ax, word [edx + ecx*2 - 2]
xor ecx, ecx
cmp ax, di
mov dword [esp + 0x18], eax
je 0x47a40f
shr ax, 1
inc ecx
cmp ax, di
jne 0x47a406
mov esi, 0x10
lea edx, [esp + 0x8b74]
sub esi, ecx
lea ecx, [esp + 0x8454]
mov dword [esp + 0x24], esi
mov dword [esp + 0x770], ecx
mov dword [esp + 0x16c], edx
jne 0x47a461
lea eax, [esp + 0x76c]
lea ecx, [esp + 0x34]
push eax
push ecx
call fcn.0047b200
lea edx, [esp + 0x170]
lea eax, [esp + 0x18]
push edx
push eax
call fcn.0047b200
add esp, 0x10
jmp 0x47a48a
lea ecx, [esp + 0x76c]
push esi
lea edx, [esp + 0x38]
push ecx
push edx
call fcn.0047b290
lea eax, [esp + 0x174]
push esi
lea ecx, [esp + 0x20]
push eax
push ecx
call fcn.0047b290
add esp, 0x18
mov eax, dword [esp + 0x76c]
mov edx, dword [esp + 0x168]
mov esi, dword [esp + 0x2e4]
sub eax, edx
mov ebx, eax
mov edi, 2
lea ecx, [eax + 1]
mov eax, edx
mov edx, dword [esp + 0x770]
mov dword [esp + 0x2e0], ecx
lea esi, [esi + ecx*2 - 2]
mov dword [esp + 0xec], eax
lea ecx, [edx + ebx*2]
mov dword [esp + 0xf0], ecx
test eax, eax
jne 0x47a4e3
mov word [esi], ax
mov dword [esp + 0xec], eax
jmp 0x47a79b
cmp dword [esp + 0x168], 1
jne 0x47a594
cmp eax, 1
jne 0x47a544
mov edx, dword [esp + 0xf0]
xor eax, eax
xor ecx, ecx
mov ax, word [edx]
mov edx, dword [esp + 0x16c]
mov cx, word [edx]
cdq
idiv ecx
xor edx, edx
mov word [esi], ax
mov ecx, dword [esp + 0x16c]
imul ax, word [ecx]
mov ecx, dword [esp + 0xf0]
sub word [ecx], ax
mov eax, dword [esp + 0xf0]
cmp word [eax], dx
setne dl
mov dword [esp + 0xec], edx
jmp 0x47a79b
mov ecx, dword [esp + 0xf0]
mov edx, dword [esp + 0x16c]
xor ebp, ebp
mov ecx, dword [ecx]
mov bp, word [edx]
mov eax, ecx
xor edx, edx
div ebp
mov word [esi], ax
mov edx, dword [esp + 0x16c]
imul ax, word [edx]
sub ecx, eax
mov eax, dword [esp + 0xf0]
mov word [eax], cx
mov edx, dword [esp + 0xf0]
xor ecx, ecx
cmp word [edx], cx
setne cl
mov dword [esp + 0xec], ecx
jmp 0x47a79b
lea eax, [esp + 0xec]
lea ecx, [esp + 0xec]
push eax
push ecx
call fcn.0047b200
lea edx, [esp + 0x170]
lea eax, [esp + 0xf4]
push edx
push eax
call fcn.0047b240
add esp, 0x10
test eax, eax
jge 0x47a5cf
mov word [esi], 0
jmp 0x47a79b
mov eax, dword [esp + 0xec]
mov ecx, dword [esp + 0x168]
cmp eax, ecx
jne 0x47a607
mov ebp, dword [esp + 0x16c]
xor edx, edx
mov dx, word [ebp + ecx*2 - 2]
mov ebp, dword [esp + 0xf0]
mov ecx, edx
xor edx, edx
mov dx, word [ebp + eax*2 - 2]
inc ecx
mov eax, edx
cdq
idiv ecx
jmp 0x47a627
mov edx, dword [esp + 0xf0]
mov ebp, dword [esp + 0x16c]
mov eax, dword [edx + eax*2 - 4]
xor edx, edx
mov dx, word [ebp + ecx*2 - 2]
mov ecx, edx
xor edx, edx
inc ecx
div ecx
lea edx, [esp + 0x512c]
mov word [esi], ax
mov dword [esp + 0x46c], edx
mov edx, dword [esp + 0x168]
mov dword [esp + 0x468], 0
mov ax, word [esi]
test edx, edx
mov dword [esp + 0x18], eax
je 0x47a726
test ax, ax
je 0x47a726
cmp ax, 1
jne 0x47a68d
lea eax, [esp + 0x468]
lea ecx, [esp + 0x168]
push eax
lea edx, [esp + 0x46c]
push ecx
push edx
call fcn.0047b3a0
add esp, 0xc
jmp 0x47a726
lea ebp, [esp + 0x4c18]
test edx, edx
mov dword [esp + 0x688], ebp
jl 0x47a6b4
lea ecx, [edx + 1]
xor eax, eax
lea edi, [esp + 0x4c18]
shr ecx, 1
rep stosd dword es:[edi], eax
adc ecx, ecx
rep stosw word es:[edi], ax
xor eax, eax
test edx, edx
jle 0x47a6f1
mov ecx, dword [esp + 0x18]
and ecx, 0xffff
mov edi, dword [esp + 0x16c]
xor edx, edx
mov dx, word [edi + eax*2]
mov edi, dword [ebp + eax*2]
imul edx, ecx
add edi, edx
mov dword [ebp + eax*2], edi
mov edx, dword [esp + 0x168]
mov ebp, dword [esp + 0x688]
inc eax
cmp eax, edx
jl 0x47a6c4
cmp word [ebp + edx*2], 0
je 0x47a6fa
inc edx
lea eax, [esp + 0x468]
mov dword [esp + 0x684], edx
lea ecx, [esp + 0x684]
push eax
lea edx, [esp + 0x46c]
push ecx
push edx
call fcn.0047b3a0
add esp, 0xc
mov edi, 2
lea eax, [esp + 0xec]
lea ecx, [esp + 0x468]
push eax
lea edx, [esp + 0xf0]
push ecx
push edx
call fcn.0047b4a0
lea eax, [esp + 0x174]
lea ecx, [esp + 0xf8]
push eax
push ecx
call fcn.0047b240
add esp, 0x14
test eax, eax
jl 0x47a79b
lea edx, [esp + 0xec]
lea eax, [esp + 0x168]
push edx
lea ecx, [esp + 0xf0]
push eax
push ecx
call fcn.0047b4a0
inc word [esi]
lea edx, [esp + 0x174]
lea eax, [esp + 0xf8]
push edx
push eax
call fcn.0047b240
add esp, 0x14
test eax, eax
jge 0x47a75f
test ebx, ebx
je 0x47a806
mov eax, dword [esp + 0xec]
mov ebp, dword [esp + 0xf0]
sub esi, edi
inc eax
sub ebp, edi
dec ebx
test ebx, ebx
mov dword [esp + 0xec], eax
mov dword [esp + 0xf0], ebp
jle 0x47a4d0
cmp eax, dword [esp + 0x168]
jge 0x47a4d0
mov word [esi], 0
mov eax, dword [esp + 0xec]
mov ebp, dword [esp + 0xf0]
sub esi, edi
inc eax
sub ebp, edi
dec ebx
mov dword [esp + 0xec], eax
test ebx, ebx
mov dword [esp + 0xf0], ebp
jg 0x47a7c9
jmp 0x47a4d0
mov eax, dword [esp + 0x2e0]
test eax, eax
jle 0x47a828
mov ecx, dword [esp + 0x2e4]
cmp word [ecx + eax*2 - 2], 0
jne 0x47a828
dec eax
mov dword [esp + 0x2e0], eax
mov eax, dword [esp + 0x24]
test eax, eax
jne 0x47a84a
mov edx, dword [esp + 0x13c]
lea eax, [esp + 0xec]
push edx
push eax
call fcn.0047b200
add esp, 8
jmp 0x47a863
mov ecx, dword [esp + 0x13c]
push eax
lea edx, [esp + 0xf0]
push ecx
push edx
call fcn.0047b310
add esp, 0xc
mov eax, dword [esp + 0x3bc]
dec eax
mov dword [esp + 0x3bc], eax
jns 0x4703cc
mov eax, dword [esp + 0x3b8]
dec eax
mov dword [esp + 0x3b8], eax
jns 0x4703c1
mov ebp, dword [esp + 0x1f500]
lea eax, [esp + 0x780]
lea ecx, [esp + 0x34]
push eax
push ecx
call fcn.0047b200
mov edx, dword [esp + 0x788]
mov ebx, dword [esp + 0x78c]
add esp, 8
lea eax, [edx + edx]
mov ecx, eax
lea esi, [ebx + eax - 1]
test ecx, ecx
mov edx, esi
jle 0x47a8d1
cmp byte [edx], 0
jne 0x47a8d1
dec ecx
dec edx
test ecx, ecx
jg 0x47a8c6
cmp ecx, 0x11
ja 0x47a965
test eax, eax
lea edi, [esp + 0x788]
mov ecx, esi
jle 0x47a8f2
cmp byte [ecx], 0
jne 0x47a8f2
dec eax
dec ecx
test eax, eax
jg 0x47a8e7
lea ecx, [esp + 0x788]
test ecx, ecx
je 0x47a90f
cmp eax, 1
mov ecx, ebx
jl 0x47a90f
mov esi, eax
mov dl, byte [ecx]
mov byte [edi], dl
inc edi
inc ecx
dec esi
jne 0x47a906
mov cl, byte [esp + eax + 0x787]
test cl, cl
jne 0x47a941
sub eax, 0x10
cmp eax, 0x11
jge 0x47a965
lea esi, [esp + 0x789]
mov edx, 0x11
sub esi, ebp
lea ecx, [eax + ebp - 1]
sub edx, eax
mov al, byte [esi + ecx]
mov byte [ecx], al
inc ecx
dec edx
jne 0x47a936
jmp 0x47a965
sub eax, 0x11
cmp eax, 0x10
jge 0x47a965
lea esi, [esp + 0x788]
mov edx, 0x10
sub esi, ebp
lea ecx, [eax + ebp]
sub edx, eax
mov al, byte [esi + ecx]
mov byte [ecx], al
inc ecx
dec edx
jne 0x47a95c
lea ecx, [esp + 0x1f4f8]
mov byte [esp + 0x1f4e4], 0
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x1f4fc]
mov dword [esp + 0x1f4e4], 0xffffffff
call sub.MFC42.DLL_CString::CString
mov ecx, dword [esp + 0x1f4dc]
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x1f4d8
ret