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

Disassembly:
sub esp, 0x60
push ebx
push esi
push edi
xor esi, esi
lea ecx, [esp + 0x9c]
push ebp
lea edx, [esp + 0x58]
mov dword [esp + 0x30], esi
mov eax, dword [ecx]
mov ebx, dword [ecx + 4]
mov ebp, dword [ecx + 8]
mov dword [esp + 0x34], esi
mov dword [edx], eax
mov eax, dword [ecx + 0xc]
mov dword [edx + 4], ebx
mov dword [edx + 8], ebp
mov dword [edx + 0xc], eax
mov edx, dword [esp + 0x7c]
mov eax, dword [esp + 0xa0]
mov ecx, dword [edx]
lea eax, [ecx + eax - 1]
cdq
idiv ecx
imul eax, ecx
mov edx, dword [esp + 0xa4]
mov dword [esp + 0x58], eax
lea eax, [ecx + edx - 1]
cdq
idiv ecx
imul eax, ecx
mov ecx, dword [esp + 0xcc]
lea edx, [esp + 0x58]
mov dword [esp + 0x5c], eax
push ecx
push edx
call fcn.1c469270
mov ecx, dword [esp + 0x84]
mov eax, dword [esp + 0xc0]
add esp, 8
cmp eax, esi
mov edx, dword [ecx]
mov ebx, dword [ecx + 4]
mov dword [esp + 0x24], edx
mov dword [esp + 0x1c], ebx
jne 0x1c471008
mov eax, dword [esp + 0xb0]
mov dword [esp + 0x14], esi
mov dword [esp + 0x20], esi
cmp eax, esi
jle 0x1c470fdf
mov eax, dword [esp + 0x78]
add eax, 0xbc
mov ebp, eax
mov dword [esp + 0x50], eax
xor edi, edi
mov eax, dword [ebp]
cmp eax, edi
jle 0x1c470fc1
xor esi, esi
jmp 0x1c470f45
fstp qword [esp + 0x30]
mov ecx, dword [ebp + 4]
mov edx, dword [esp + 0x50]
add ecx, esi
inc edi
mov eax, dword [edx]
add esi, 0x88
imul eax, dword [esp + 0x14]
mov edx, dword [ecx + 8]
nop
lea ebx, [eax + edi - 1]
mov eax, dword [ecx + 0xc]
push eax
push edx
mov eax, dword [ecx + 4]
mov edx, dword [esp + 0x94]
push eax
mov ecx, dword [ecx]
mov eax, dword [esp + 0x94]
push ecx
mov ecx, dword [esp + 0x94]
push edx
mov edx, dword [esp + 0x94]
push eax
push ecx
push edx
call fcn.1c4dbe0d
mov ecx, dword [esp + 0x9c]
mov eax, dword [esp + 0x40]
add esp, 0x20
inc eax
mov edx, dword [ecx + 8]
mov dword [esp + 0x20], eax
fstp qword [edx + ebx*8]
mov edx, dword [ecx + 8]
cmp dword [ebp], edi
fld qword [edx + ebx*8]
fadd qword [esp + 0x30]
jg 0x1c470f41
fstp qword [esp + 0x30]
add ebp, 0xc4
mov eax, dword [esp + 0x14]
inc eax
mov ecx, dword [esp + 0xb0]
mov dword [esp + 0x14], eax
cmp ecx, eax
jg 0x1c470f30
fild dword [esp + 0x20]
fdivr qword [esp + 0x30]
fcom qword [0x1c4b70a8]
fstp qword [esp + 0x50]
fnstsw ax
test ah, 0x40
je 0x1c471008
mov dword [esp + 0x50], 0x9abcaf48
mov dword [esp + 0x54], 0x3e7ad7f2
mov eax, dword [esp + 0xb8]
test eax, eax
jne 0x1c471145
mov dword [esp + 0x14], 0
mov eax, dword [esp + 0xb0]
test eax, eax
jle 0x1c471390
fldz
fld qword [esp + 0xc0]
mov eax, dword [esp + 0x78]
add eax, 0xbc
mov dword [esp + 0x20], eax
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x18]
xor edi, edi
xor ebp, ebp
cmp dword [eax], ebp
jle 0x1c471115
fldln2
fld qword [0x1c4b70b8]
fyl2x
fstp qword [esp + 0x30]
fldln2
mov eax, dword [esp + 0x18]
mov esi, dword [eax + 4]
mov eax, dword [esp + 0x20]
add esi, edi
nop
mov ecx, dword [eax]
mov eax, dword [esp + 0x7c]
imul ecx, dword [esp + 0x14]
add ecx, ebp
mov edx, dword [eax + 8]
fld qword [edx + ecx*8]
fdiv qword [esp + 0x50]
mov ecx, dword [esp + 0x74]
mov al, byte [ecx + 0x30]
cmp al, 7
fld qword [0x1c4b70b8]
fmul st(1)
fxch st(1)
fadd qword [0x1c4b70b8]
fxch st(1)
fadd qword [0x1c4b70c0]
fdivrp st(1)
fyl2x
fdiv qword [esp + 0x30]
fmul qword [0x1c4b70c8]
fsub st(1)
jbe 0x1c4710d4
fstp st(2)
fld st(1)
add esi, 0x18
xor ebx, ebx
mov bl, al
call fcn.1c45d0c0
add ebx, eax
jmp 0x1c4710e6
fstp st(2)
fld st(0)
add esi, 0x18
xor ebx, ebx
mov bl, al
call fcn.1c45d0c0
sub ebx, eax
mov dword [esi], ebx
mov eax, dword [esi]
test eax, eax
jl 0x1c4710fc
cmp eax, 0x1f
jl 0x1c4710f8
mov eax, 0x1f
mov dword [esi], eax
jmp 0x1c471102
mov dword [esi], 0
mov eax, dword [esp + 0x18]
add edi, 0x88
inc ebp
cmp dword [eax], ebp
jg 0x1c471066
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x14]
add eax, 0xc4
inc ecx
mov edx, dword [esp + 0xb0]
mov dword [esp + 0x18], eax
mov dword [esp + 0x14], ecx
cmp edx, ecx
jg 0x1c471048
fstp st(0)
fstp qword [esp + 0x30]
jmp 0x1c4711de
mov eax, dword [esp + 0xb0]
test eax, eax
jle 0x1c471390
mov edi, dword [esp + 0x78]
mov ebp, eax
add edi, 0xbc
xor esi, esi
xor ebx, ebx
cmp dword [edi], ebx
jle 0x1c4711d5
xor eax, eax
mov al, byte [esp + 0xbc]
mov dword [esp + 0x30], eax
mov edx, dword [edi + 4]
xor ecx, ecx
add edx, esi
mov eax, dword [esp + 0x74]
mov cl, byte [eax + 0x30]
mov eax, dword [esp + 0x30]
sub ecx, eax
mov eax, dword [edx + 0x18]
add ecx, eax
mov dword [edx + 0x18], ecx
js 0x1c4711a2
cmp ecx, 0x1f
jl 0x1c47119d
mov ecx, 0x1f
mov dword [edx + 0x18], ecx
jmp 0x1c4711a9
mov dword [edx + 0x18], 0
mov eax, dword [edx + 0x18]
test eax, eax
jl 0x1c4711b5
cmp eax, 0x1f
jle 0x1c4711ca
mov eax, dword [esp + 0xcc]
push 0x20e00e4
push eax
call fcn.1c474d74
add esp, 8
add esi, 0x88
inc ebx
cmp dword [edi], ebx
jg 0x1c471175
add edi, 0xc4
dec ebp
jne 0x1c471160
mov eax, dword [esp + 0xb0]
test eax, eax
jle 0x1c471614
mov eax, dword [esp + 0x78]
mov ecx, dword [esp + 0xb0]
add eax, 0xbc
mov dword [esp + 0x50], ecx
mov dword [esp + 0x14], eax
xor eax, eax
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x28], eax
mov edx, dword [ecx]
cmp edx, eax
jle 0x1c471374
mov dword [esp + 0x18], eax
mov ecx, dword [esp + 0x14]
xor ebx, ebx
mov ebp, dword [ecx + 4]
add ebp, dword [esp + 0x18]
cmp dword [ebp + 0x80], ebx
jle 0x1c471352
mov eax, dword [esp + 0x24]
mov dword [esp + 0x20], ebx
imul eax, eax
lea esi, [eax*4]
mov edx, dword [ebp + 0x84]
mov eax, dword [esp + 0x20]
add edx, eax
lea ecx, [esp + 0x30]
mov edi, dword [edx]
mov eax, dword [edx + 4]
mov dword [ecx], edi
mov edi, dword [edx + 8]
mov edx, dword [edx + 0xc]
mov dword [ecx + 4], eax
mov eax, dword [esp + 0x24]
mov dword [ecx + 8], edi
mov edi, dword [esp + 0x1c]
mov dword [ecx + 0xc], edx
mov ecx, esi
mov dword [esp + 0x3c], eax
shr ecx, 2
mov dword [esp + 0x38], eax
xor eax, eax
rep stosd dword es:[edi], eax
mov ecx, esi
and ecx, 3
rep stosb byte es:[edi], al
mov edi, dword [esp + 0x1c]
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x38]
push edi
mov edx, dword [esp + 0x38]
push eax
mov eax, dword [esp + 0x38]
push ecx
mov ecx, dword [esp + 0xa8]
push edx
mov edx, dword [esp + 0xa8]
push eax
mov eax, dword [esp + 0xa8]
push ecx
mov ecx, dword [esp + 0xa8]
push edx
mov edx, dword [esp + 0xa8]
push eax
mov eax, dword [esp + 0xa8]
push ecx
mov ecx, dword [esp + 0xa8]
push edx
mov edx, dword [esp + 0xa8]
push eax
push ecx
push edx
call fcn.1c474a80
mov edx, dword [esp + 0xa8]
add esp, 0x34
xor ecx, ecx
mov cl, byte [edx + 0x38]
push ecx
push 0
push edi
call fcn.1c473c10
add esp, 0xc
mov ecx, dword [esp + 0x3c]
mov eax, dword [esp + 0x38]
mov edx, dword [esp + 0x34]
push ecx
mov ecx, dword [esp + 0x34]
push eax
mov eax, dword [esp + 0x6c]
push edx
mov edx, dword [esp + 0x6c]
push ecx
mov ecx, dword [esp + 0x6c]
push eax
mov eax, dword [esp + 0x6c]
push edx
push ecx
inc ebx
push eax
push edi
call fcn.1c474c60
mov eax, dword [esp + 0x44]
add esp, 0x24
add eax, 0x18
mov ecx, dword [ebp + 0x80]
mov dword [esp + 0x20], eax
cmp ecx, ebx
jg 0x1c471248
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x28]
add eax, 0x88
inc ecx
mov dword [esp + 0x18], eax
mov dword [esp + 0x28], ecx
mov eax, dword [esp + 0x14]
cmp dword [eax], ecx
jg 0x1c47121d
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x50]
add eax, 0xc4
dec ecx
mov dword [esp + 0x14], eax
mov dword [esp + 0x50], ecx
jne 0x1c471205
mov eax, dword [esp + 0xb0]
test eax, eax
jle 0x1c471829
mov eax, dword [esp + 0x78]
mov ecx, dword [esp + 0xb0]
add eax, 0xbc
mov dword [esp + 0x20], ecx
mov dword [esp + 0x40], eax
mov dword [esp + 0x4c], 0
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x28], 0
cmp dword [ecx], 0
jle 0x1c4715f8
mov dword [esp + 0x14], 0
mov ecx, dword [esp + 0x40]
mov esi, dword [esp + 0x14]
mov edx, dword [ecx + 4]
add esi, edx
mov eax, dword [esi + 0x18]
mov dword [esp + 0x2c], 0
mov dl, byte [esi + 0x14]
lea ecx, [esi + 0x10]
mov ebx, dword [esi + 0x80]
mov dword [esp + 0x68], eax
test dl, dl
sete cl
mov byte [esp + 0x13], cl
test ebx, ebx
jle 0x1c4715d6
mov dword [esp + 0x18], 0
mov eax, dword [esp + 0x24]
imul eax, eax
mov dword [esp + 0x48], eax
shl eax, 2
mov dword [esp + 0x50], eax
mov ecx, dword [esi + 0x84]
mov eax, dword [esp + 0x18]
add ecx, eax
lea edx, [esp + 0x30]
mov ebx, dword [ecx]
mov eax, dword [ecx + 4]
mov ebp, dword [ecx + 8]
mov dword [edx], ebx
mov ecx, dword [ecx + 0xc]
mov dword [edx + 4], eax
mov eax, dword [esp + 0x24]
mov edi, dword [esp + 0x1c]
mov dword [edx + 8], ebp
mov dword [edx + 0xc], ecx
mov edx, dword [esp + 0x50]
mov ecx, edx
mov dword [esp + 0x3c], eax
shr ecx, 2
mov dword [esp + 0x38], eax
xor eax, eax
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
mov ecx, dword [esp + 0x3c]
mov eax, dword [esp + 0x38]
mov edx, dword [esp + 0x34]
push ecx
mov ecx, dword [esp + 0x34]
push eax
mov eax, dword [esp + 0x6c]
push edx
mov edx, dword [esp + 0x6c]
push ecx
mov ecx, dword [esp + 0x6c]
push eax
mov eax, dword [esp + 0x6c]
push edx
mov edi, dword [esp + 0x34]
push ecx
push eax
push edi
call fcn.1c474b90
mov al, byte [esp + 0x37]
add esp, 0x24
test al, al
je 0x1c4714c0
mov eax, dword [esp + 0x4c]
mov ecx, dword [edi]
sub ecx, eax
mov dword [edi], ecx
mov eax, dword [esp + 0x48]
test eax, eax
jle 0x1c47150f
xor ecx, ecx
mov eax, dword [esp + 0x68]
mov cl, byte [esp + 0x13]
mov edx, dword [esp + 0x74]
shl ecx, 5
mov ebp, dword [esp + 0x1c]
add ecx, eax
shl ecx, 7
lea ebx, [ecx + edx + 0x17b80]
mov ecx, dword [esp + 0x48]
mov eax, dword [ebp]
xor edi, edi
mov di, word [ebx]
cmp edi, 1
je 0x1c471506
test eax, eax
jg 0x1c471500
jge 0x1c471506
cdq
idiv edi
mov dword [ebp], eax
add ebx, 2
add ebp, 4
dec ecx
jne 0x1c4714ed
mov al, byte [esp + 0x13]
test al, al
je 0x1c47157f
mov edi, dword [esp + 0x1c]
xor edx, edx
mov dl, al
mov eax, dword [esp + 0x68]
shl edx, 5
mov ecx, dword [edi]
add edx, eax
xor edi, edi
shl edx, 7
mov eax, dword [esp + 0x74]
mov di, word [edx + eax + 0x17b80]
cmp edi, 1
je 0x1c47157b
test ecx, ecx
jle 0x1c47155b
mov ebx, edi
mov eax, edi
imul ebx, ecx
and eax, 1
sub ebx, eax
mov eax, edi
cdq
sub eax, edx
sar eax, 1
add ebx, eax
jmp 0x1c471570
jge 0x1c47157b
mov ebx, edi
mov eax, edi
cdq
imul ebx, ecx
sub eax, edx
and edi, 1
sar eax, 1
sub ebx, eax
add ebx, edi
cmp ecx, 1
sbb eax, eax
inc eax
imul ebx, eax
mov ecx, ebx
add dword [esp + 0x4c], ecx
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x34]
push eax
mov eax, dword [esp + 0x34]
push ecx
mov ecx, dword [esp + 0x6c]
push edx
mov edx, dword [esp + 0x6c]
push eax
mov eax, dword [esp + 0x6c]
push ecx
mov ecx, dword [esp + 0x6c]
push edx
mov edi, dword [esp + 0x34]
push eax
push ecx
push edi
call fcn.1c474c60
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x50]
add esp, 0x24
add eax, 0x18
inc ecx
mov edx, dword [esi + 0x80]
mov dword [esp + 0x18], eax
mov dword [esp + 0x2c], ecx
cmp edx, ecx
jg 0x1c47142f
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x28]
add eax, 0x88
inc ecx
mov dword [esp + 0x14], eax
mov dword [esp + 0x28], ecx
mov eax, dword [esp + 0x40]
cmp dword [eax], ecx
jg 0x1c4713dc
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x20]
add eax, 0xc4
dec ecx
mov dword [esp + 0x40], eax
mov dword [esp + 0x20], ecx
jne 0x1c4713b7
mov eax, dword [esp + 0xb0]
test eax, eax
jle 0x1c471a85
mov eax, dword [esp + 0x78]
mov ecx, dword [esp + 0xb0]
add eax, 0xbc
mov dword [esp + 0x40], ecx
mov dword [esp + 0x44], eax
mov ecx, dword [esp + 0x44]
mov dword [esp + 0x28], 0
cmp dword [ecx], 0
jle 0x1c47180d
mov dword [esp + 0x6c], 0
mov ecx, dword [esp + 0x44]
mov bl, 1
mov byte [esp + 0x4c], 0
mov ebp, dword [ecx + 4]
add ebp, dword [esp + 0x6c]
mov dword [esp + 0x2c], 0
lea ecx, [ebp + 0x10]
mov esi, dword [ebp + 0x84]
mov edi, dword [ebp + 0x80]
mov dword [esp + 0x14], ecx
test edi, edi
jle 0x1c4717eb
add esi, 0x10
mov eax, dword [esp + 0x24]
mov dword [esp + 0x68], 0
imul eax, eax
mov dword [esp + 0x48], eax
shl eax, 2
mov dword [esp + 0x50], eax
mov edx, dword [ebp + 0x84]
mov eax, dword [esp + 0x68]
add edx, eax
lea ecx, [esp + 0x30]
mov edi, dword [edx]
mov eax, dword [edx + 4]
mov dword [ecx], edi
mov edi, dword [edx + 8]
mov edx, dword [edx + 0xc]
mov dword [ecx + 4], eax
mov eax, dword [esp + 0x24]
mov dword [ecx + 8], edi
mov edi, dword [esp + 0x1c]
mov dword [ecx + 0xc], edx
mov edx, dword [esp + 0x50]
mov dword [esp + 0x3c], eax
mov ecx, edx
mov dword [esp + 0x38], eax
shr ecx, 2
xor eax, eax
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
mov ecx, dword [esp + 0x3c]
mov eax, dword [esp + 0x38]
mov edx, dword [esp + 0x34]
push ecx
mov ecx, dword [esp + 0x34]
push eax
mov eax, dword [esp + 0x6c]
push edx
mov edx, dword [esp + 0x6c]
push ecx
mov ecx, dword [esp + 0x6c]
push eax
mov eax, dword [esp + 0x6c]
push edx
mov edi, dword [esp + 0x34]
push ecx
push eax
push edi
call fcn.1c474b90
mov eax, dword [esp + 0x6c]
xor edx, edx
add esp, 0x24
mov dword [esi], 0
mov ecx, dword [esi + 4]
cmp eax, edx
mov byte [esp + 0x13], 1
jle 0x1c471792
mov eax, dword [esp + 0x74]
mov dword [esp + 0x18], 0
mov edi, dword [eax + 0x19b80]
mov al, byte [edi + edx]
mov edi, dword [esp + 0x1c]
mov byte [esp + 0x18], al
mov eax, dword [esp + 0x18]
mov edi, dword [edi + eax*4]
mov al, byte [esp + 0x13]
test edi, edi
jne 0x1c471775
inc al
mov byte [esp + 0x13], al
jmp 0x1c471789
mov byte [ecx + 2], al
add ecx, 6
mov byte [esp + 0x13], 1
mov word [ecx - 2], di
mov edi, dword [esi]
inc edi
mov dword [esi], edi
inc edx
mov eax, dword [esp + 0x48]
cmp edx, eax
jl 0x1c471741
mov eax, dword [esi]
test eax, eax
jle 0x1c47179c
or byte [esp + 0x4c], bl
add bl, bl
mov eax, dword [ebp + 0xc]
cmp eax, 8
jg 0x1c4717a8
add bl, bl
mov byte [ecx + 2], 0
mov word [ecx + 4], 0
mov eax, dword [esi]
mov dl, byte [esp + 0x4c]
inc eax
mov ecx, dword [esp + 0x14]
mov dword [esi], eax
add esi, 0x18
mov edi, dword [esp + 0x68]
mov eax, dword [esp + 0x2c]
add edi, 0x18
inc eax
mov byte [ecx + 5], dl
mov dword [esp + 0x68], edi
mov dword [ecx], 0
mov dword [esp + 0x2c], eax
cmp dword [ebp + 0x80], eax
jg 0x1c4716aa
mov eax, dword [esp + 0x6c]
mov ecx, dword [esp + 0x28]
add eax, 0x88
inc ecx
mov dword [esp + 0x6c], eax
mov dword [esp + 0x28], ecx
mov eax, dword [esp + 0x44]
cmp dword [eax], ecx
jg 0x1c471658
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x40]
add eax, 0xc4
dec ecx
mov dword [esp + 0x44], eax
mov dword [esp + 0x40], ecx
jne 0x1c47163b
mov eax, dword [esp + 0xb0]
test eax, eax
jle 0x1c471c13
mov eax, dword [esp + 0x78]
mov ecx, dword [esp + 0xb0]
add eax, 0xbc
mov dword [esp + 0x18], ecx
mov dword [esp + 0x44], eax
mov dword [esp + 0x4c], 0
mov ecx, dword [esp + 0x44]
mov dword [esp + 0x28], 0
cmp dword [ecx], 0
jle 0x1c471a69
mov dword [esp + 0x40], 0
mov ecx, dword [esp + 0x44]
mov eax, dword [esp + 0x40]
add eax, dword [ecx + 4]
mov dword [esp + 0x6c], eax
nop
mov bl, byte [eax + 0x14]
mov edx, dword [eax + 0x18]
lea ecx, [eax + 0x10]
mov dword [esp + 0x68], edx
test bl, bl
sete al
mov byte [esp + 0x13], al
mov eax, dword [esp + 0x6c]
mov dword [esp + 0x2c], 0
mov ebp, dword [eax + 0x80]
test ebp, ebp
jle 0x1c471a47
mov dword [esp + 0x14], 0
mov eax, dword [esp + 0x24]
imul eax, eax
mov dword [esp + 0x48], eax
shl eax, 2
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x6c]
mov edx, dword [esp + 0x14]
mov ecx, dword [eax + 0x84]
add ecx, edx
lea edx, [esp + 0x30]
mov eax, dword [ecx]
mov ebx, dword [ecx + 4]
mov ebp, dword [ecx + 8]
mov dword [edx], eax
mov eax, dword [ecx + 0xc]
mov dword [edx + 4], ebx
mov ecx, dword [esp + 0x24]
mov edi, dword [esp + 0x1c]
mov dword [edx + 8], ebp
mov dword [edx + 0xc], eax
mov edx, dword [esp + 0x50]
xor eax, eax
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x38], ecx
mov ecx, edx
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x34]
push eax
mov eax, dword [esp + 0x34]
push ecx
mov ecx, dword [esp + 0x6c]
push edx
mov edx, dword [esp + 0x6c]
push eax
mov eax, dword [esp + 0x6c]
push ecx
mov ecx, dword [esp + 0x6c]
push edx
mov edi, dword [esp + 0x34]
push eax
push ecx
push edi
call fcn.1c474b90
mov eax, dword [esp + 0x6c]
add esp, 0x24
test eax, eax
jle 0x1c4719d6
xor ecx, ecx
mov eax, dword [esp + 0x68]
mov cl, byte [esp + 0x13]
mov edx, dword [esp + 0x74]
shl ecx, 5
mov esi, dword [esp + 0x1c]
add ecx, eax
mov eax, dword [esp + 0x48]
shl ecx, 7
mov dword [esp + 0x20], eax
lea edi, [ecx + edx + 0x17b80]
mov ecx, dword [esi]
xor ebp, ebp
mov bp, word [edi]
cmp ebp, 1
je 0x1c4719ca
test ecx, ecx
jle 0x1c4719aa
mov ebx, ebp
mov eax, ebp
imul ebx, ecx
and eax, 1
sub ebx, eax
mov eax, ebp
cdq
sub eax, edx
sar eax, 1
add ebx, eax
jmp 0x1c4719bf
jge 0x1c4719ca
mov ebx, ebp
mov eax, ebp
cdq
imul ebx, ecx
sub eax, edx
and ebp, 1
sar eax, 1
sub ebx, eax
add ebx, ebp
cmp ecx, 1
sbb eax, eax
inc eax
imul ebx, eax
mov dword [esi], ebx
add edi, 2
add esi, 4
dec dword [esp + 0x20]
jne 0x1c471983
mov al, byte [esp + 0x13]
test al, al
je 0x1c4719ee
mov edi, dword [esp + 0x1c]
mov eax, dword [esp + 0x4c]
add eax, dword [edi]
mov dword [edi], eax
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x34]
push eax
mov eax, dword [esp + 0x34]
push ecx
mov ecx, dword [esp + 0x6c]
push edx
mov edx, dword [esp + 0x6c]
push eax
mov eax, dword [esp + 0x6c]
push ecx
mov ecx, dword [esp + 0x6c]
push edx
mov edi, dword [esp + 0x34]
push eax
push ecx
push edi
call fcn.1c474c60
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x50]
add esp, 0x24
add eax, 0x18
inc ecx
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x6c]
cmp dword [eax + 0x80], ecx
jg 0x1c4718cf
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x28]
add eax, 0x88
inc ecx
mov dword [esp + 0x40], eax
mov dword [esp + 0x28], ecx
mov eax, dword [esp + 0x44]
cmp dword [eax], ecx
jg 0x1c471875
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x18]
add eax, 0xc4
dec ecx
mov dword [esp + 0x44], eax
mov dword [esp + 0x18], ecx
jne 0x1c471850
mov eax, dword [esp + 0xb0]
test eax, eax
jle 0x1c471c13
mov eax, dword [esp + 0x78]
mov ecx, dword [esp + 0xb0]
add eax, 0xbc
mov dword [esp + 0x50], ecx
mov dword [esp + 0x18], eax
xor eax, eax
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x28], eax
mov edx, dword [ecx]
cmp edx, eax
jle 0x1c471bf7
mov dword [esp + 0x20], eax
mov ecx, dword [esp + 0x18]
xor ebx, ebx
mov dword [esp + 0x2c], ebx
mov ebp, dword [ecx + 4]
add ebp, dword [esp + 0x20]
cmp dword [ebp + 0x80], ebx
jle 0x1c471bd5
mov eax, dword [esp + 0x24]
imul eax, eax
lea esi, [eax*4]
mov edx, dword [ebp + 0x84]
lea ecx, [esp + 0x30]
add edx, ebx
mov eax, dword [edx]
mov edi, dword [edx + 4]
mov dword [ecx], eax
mov eax, dword [edx + 8]
mov edx, dword [edx + 0xc]
mov dword [ecx + 4], edi
mov edi, dword [esp + 0x1c]
mov dword [ecx + 8], eax
xor eax, eax
mov dword [ecx + 0xc], edx
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x38], ecx
mov ecx, esi
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, esi
and ecx, 3
rep stosb byte es:[edi], al
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x34]
push eax
mov eax, dword [esp + 0x34]
push ecx
mov ecx, dword [esp + 0x6c]
push edx
mov edx, dword [esp + 0x6c]
push eax
mov eax, dword [esp + 0x6c]
push ecx
mov ecx, dword [esp + 0x6c]
push edx
mov edi, dword [esp + 0x34]
push eax
push ecx
push edi
call fcn.1c474b90
mov eax, dword [esp + 0x98]
add esp, 0x24
xor ecx, ecx
mov cl, byte [eax + 0x38]
push ecx
push 1
push edi
call fcn.1c473c10
mov ecx, dword [esp + 0x48]
mov eax, dword [esp + 0x44]
mov edx, dword [esp + 0x40]
add esp, 0xc
push ecx
push eax
mov ecx, dword [esp + 0x38]
push edx
push ecx
mov eax, dword [esp + 0xbc]
mov edx, dword [esp + 0xb8]
mov ecx, dword [esp + 0xb4]
push eax
mov eax, dword [esp + 0xb4]
push edx
push ecx
add ebx, 0x18
push eax
push edi
call fcn.1c474c60
mov eax, dword [esp + 0x50]
add esp, 0x24
inc eax
mov ecx, dword [ebp + 0x80]
mov dword [esp + 0x2c], eax
cmp ecx, eax
jg 0x1c471aef
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x28]
add eax, 0x88
inc ecx
mov dword [esp + 0x20], eax
mov dword [esp + 0x28], ecx
mov eax, dword [esp + 0x18]
cmp dword [eax], ecx
jg 0x1c471ac4
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x50]
add eax, 0xc4
dec ecx
mov dword [esp + 0x18], eax
mov dword [esp + 0x50], ecx
jne 0x1c471aac
mov eax, dword [esp + 0xcc]
mov ecx, dword [esp + 0x64]
mov edx, dword [esp + 0x60]
push eax
mov eax, dword [esp + 0x60]
push ecx
mov ecx, dword [esp + 0x60]
push edx
push eax
push ecx
call fcn.1c4692b0
add esp, 0x14
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x60
ret