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

Disassembly:
sub esp, 0x70
push ebx
mov ebx, dword [esp + 0x80]
push ebp
push esi
mov ebp, ecx
mov esi, ebx
push edi
mov edi, dword [esp + 0x88]
mov edx, edi
test ebp, ebp
jne 0x428e19
mov dword [esp + 0x5c], 0xfffffbcc
jmp 0x428e29
lea eax, [ebp - 0x435]
or esi, 0x100000
mov dword [esp + 0x5c], eax
mov eax, edx
mov byte [esp + 0x17], 1
and eax, 1
or eax, 0
je 0x428e3d
mov byte [esp + 0x17], 0
mov eax, edx
mov ecx, esi
shld ecx, eax, 2
shl eax, 2
or edi, ebx
mov dword [esp + 0x64], ecx
mov dword [esp + 0x60], eax
jne 0x428e5d
mov dword [esp + 0x38], edi
cmp ebp, 1
ja 0x428e65
mov dword [esp + 0x38], 1
mov ebx, dword [esp + 0x5c]
xor al, al
shld esi, edx, 1
mov byte [esp + 0x14], 0
add edx, edx
mov byte [esp + 0x15], al
mov dword [esp + 0x3c], esi
mov dword [esp + 0x40], edx
test ebx, ebx
js 0x429491
xor eax, eax
imul ecx, ebx, 0x13441
shr ecx, 0x12
cmp ebx, 3
setg al
sub ecx, eax
imul eax, ecx, 0x12934f
mov ebp, ecx
shl ebp, 4
add ebp, 0x5b4090
mov dword [esp + 0x34], ecx
shr eax, 0x13
sub eax, ebx
mov edi, dword [ebp]
add eax, ecx
mov dword [esp + 0x44], edi
mov dword [esp + 0x2c], eax
mov eax, dword [ebp + 4]
mov dword [esp + 0x48], eax
mov eax, edi
mul edx
mov ebx, eax
mov ecx, edx
mov eax, edi
mul esi
mov esi, eax
mov edi, edx
mov eax, dword [ebp + 4]
add esi, ecx
adc edi, 0
mul dword [esp + 0x40]
add eax, esi
mov ecx, edx
mov dword [esp + 0x28], eax
mov eax, dword [ebp + 4]
adc ecx, 0
mul dword [esp + 0x3c]
mov dword [esp + 0x30], eax
mov eax, edx
mov edx, dword [esp + 0x30]
add edx, ecx
adc eax, 0
add edx, edi
mov edi, dword [ebp + 8]
adc eax, 0
mov dword [esp + 0x30], edx
mov dword [esp + 0x5c], eax
xor eax, eax
or eax, ebx
mov dword [esp + 0x4c], edi
mov dword [esp + 0x1c], eax
mov eax, dword [ebp + 0xc]
mov dword [esp + 0x24], eax
mov eax, edi
mul dword [esp + 0x40]
mov ebx, eax
mov ecx, edx
mov eax, edi
mul dword [esp + 0x3c]
mov esi, eax
mov edi, edx
mov eax, dword [esp + 0x24]
add esi, ecx
adc edi, 0
mul dword [esp + 0x40]
add eax, esi
mov ecx, edx
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x24]
adc ecx, 0
mul dword [esp + 0x3c]
mov ebp, eax
add ebp, ecx
mov ecx, dword [esp + 0x30]
adc edx, 0
add ebp, edi
adc edx, 0
xor edi, edi
or edi, ebx
mov ebx, dword [esp + 0x18]
add edi, ecx
adc ebx, dword [esp + 0x5c]
mov dword [esp + 0x68], edi
mov dword [esp + 0x18], ebx
cmp ebx, dword [esp + 0x5c]
ja 0x428f9a
jb 0x428f91
cmp edi, ecx
jae 0x428f9a
mov eax, 1
xor ecx, ecx
jmp 0x428fab
xorps xmm0, xmm0
movlpd qword [esp + 0x78], xmm0
mov ecx, dword [esp + 0x7c]
mov eax, dword [esp + 0x78]
add ebp, eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x3c], ebp
adc edx, ecx
mov dword [esp + 0x40], edx
mov edx, dword [esp + 0x1c]
mov esi, edx
add esi, dword [esp + 0x44]
adc eax, dword [esp + 0x48]
cmp eax, dword [esp + 0x28]
ja 0x428fde
jb 0x428fd5
cmp esi, edx
jae 0x428fde
mov eax, 1
xor ebp, ebp
jmp 0x428fef
xorps xmm0, xmm0
movlpd qword [esp + 0x78], xmm0
mov ebp, dword [esp + 0x7c]
mov eax, dword [esp + 0x78]
add eax, edi
adc ebp, ebx
add eax, dword [esp + 0x4c]
adc ebp, dword [esp + 0x24]
cmp ebp, ebx
ja 0x42900e
jb 0x429005
cmp eax, edi
jae 0x42900e
mov eax, 1
xor edx, edx
jmp 0x42901f
xorps xmm0, xmm0
movlpd qword [esp + 0x78], xmm0
mov edx, dword [esp + 0x7c]
mov eax, dword [esp + 0x78]
mov esi, dword [esp + 0x2c]
mov ecx, 7
sub ecx, esi
mov dword [esp + 0x50], ecx
lea ecx, [esi + 0x19]
xor esi, esi
shr ebp, cl
add eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x50]
adc edx, dword [esp + 0x40]
call fcn.00510c10
or ebp, eax
or esi, edx
cmp dword [esp + 0x38], 1
mov eax, dword [esp + 0x28]
mov dword [esp + 0x30], ebp
mov dword [esp + 0x20], esi
jne 0x4290f6
mov edx, dword [esp + 0x1c]
mov esi, edx
sub esi, dword [esp + 0x44]
sbb eax, dword [esp + 0x48]
cmp eax, dword [esp + 0x28]
jb 0x429084
ja 0x42907b
cmp esi, edx
jbe 0x429084
mov ecx, 1
xor edx, edx
jmp 0x429095
xorps xmm0, xmm0
movlpd qword [esp + 0x78], xmm0
mov edx, dword [esp + 0x7c]
mov ecx, dword [esp + 0x78]
mov eax, edi
sub eax, ecx
sbb ebx, edx
sub eax, dword [esp + 0x4c]
sbb ebx, dword [esp + 0x24]
cmp ebx, dword [esp + 0x18]
jb 0x4290b8
ja 0x4290af
cmp eax, edi
jbe 0x4290b8
mov edx, 1
xor esi, esi
jmp 0x4290c9
xorps xmm0, xmm0
movlpd qword [esp + 0x78], xmm0
mov esi, dword [esp + 0x7c]
mov edx, dword [esp + 0x78]
mov ecx, dword [esp + 0x2c]
xor edi, edi
mov eax, dword [esp + 0x3c]
lea ecx, [ecx + 0x19]
shr ebx, cl
sub eax, edx
mov edx, dword [esp + 0x40]
mov ecx, dword [esp + 0x50]
sbb edx, esi
call fcn.00510c10
or ebx, eax
or edi, edx
mov dword [esp + 0x1c], edi
jmp 0x429235
mov ecx, dword [esp + 0x1c]
mov edx, eax
mov esi, ecx
shld edx, esi, 1
add esi, esi
mov dword [esp + 0x28], edx
cmp edx, eax
ja 0x42911b
jb 0x429112
cmp esi, ecx
jae 0x42911b
mov eax, 1
xor edx, edx
jmp 0x42912c
xorps xmm0, xmm0
movlpd qword [esp + 0x78], xmm0
mov edx, dword [esp + 0x7c]
mov eax, dword [esp + 0x78]
mov ecx, edi
mov edi, ebx
shld edi, ecx, 1
add ecx, ecx
add ecx, eax
adc edi, edx
cmp edi, ebx
ja 0x429155
jb 0x429146
cmp ecx, dword [esp + 0x68]
jae 0x429155
mov ebx, 1
mov dword [esp + 0x5c], 0
jmp 0x42916a
xorps xmm0, xmm0
movlpd qword [esp + 0x78], xmm0
mov eax, dword [esp + 0x7c]
mov ebx, dword [esp + 0x78]
mov dword [esp + 0x5c], eax
mov edx, dword [esp + 0x3c]
mov eax, dword [esp + 0x40]
shld eax, edx, 1
add edx, edx
add edx, ebx
adc eax, dword [esp + 0x5c]
mov dword [esp + 0x1c], eax
mov eax, esi
sub eax, dword [esp + 0x44]
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0x28]
sbb eax, dword [esp + 0x48]
cmp eax, dword [esp + 0x28]
jb 0x4291b1
ja 0x4291a2
cmp dword [esp + 0x68], esi
jbe 0x4291b1
mov esi, 1
mov dword [esp + 0x5c], 0
jmp 0x4291c6
xorps xmm0, xmm0
movlpd qword [esp + 0x78], xmm0
mov eax, dword [esp + 0x7c]
mov esi, dword [esp + 0x78]
mov dword [esp + 0x5c], eax
mov eax, ecx
mov ebx, edi
sub eax, esi
sbb ebx, dword [esp + 0x5c]
sub eax, dword [esp + 0x4c]
sbb ebx, dword [esp + 0x24]
cmp ebx, edi
jb 0x4291f1
ja 0x4291e2
cmp eax, ecx
jbe 0x4291f1
mov eax, 1
mov dword [esp + 0x5c], 0
jmp 0x429206
xorps xmm0, xmm0
movlpd qword [esp + 0x78], xmm0
mov eax, dword [esp + 0x7c]
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x78]
mov ecx, dword [esp + 0x2c]
xor esi, esi
mov edi, dword [esp + 0x1c]
add ecx, 0x1a
shr ebx, cl
sub edx, eax
mov ecx, 6
mov eax, edx
sbb edi, dword [esp + 0x5c]
sub ecx, dword [esp + 0x2c]
mov edx, edi
call fcn.00510c10
or ebx, eax
or esi, edx
mov dword [esp + 0x1c], esi
mov ecx, dword [esp + 0x2c]
xor esi, esi
mov eax, dword [esp + 0x3c]
mov edx, dword [esp + 0x40]
mov dword [esp + 0x28], ebx
mov ebx, dword [esp + 0x18]
lea ecx, [ecx + 0x19]
shr ebx, cl
mov ecx, dword [esp + 0x50]
call fcn.00510c10
or ebx, eax
or esi, edx
cmp dword [esp + 0x34], 0x15
mov dword [esp + 0x18], ebx
ja 0x429303
mov eax, 0xcccccccd
xor edi, edi
mul dword [esp + 0x60]
mov eax, 0xcccccccd
mov ecx, edx
mul dword [esp + 0x64]
add ecx, eax
mov eax, 0xcccccccc
adc edi, edx
mul dword [esp + 0x60]
add eax, ecx
mov ebx, edx
mov eax, 0xcccccccc
adc ebx, 0
xor ecx, ecx
add ebx, edi
mov edi, dword [esp + 0x64]
adc ecx, ecx
mul edi
add ebx, eax
adc ecx, edx
mov edx, dword [esp + 0x60]
shrd ebx, ecx, 2
mov ecx, edx
lea eax, [ebx + ebx*4]
sub ecx, eax
mov ecx, dword [esp + 0x34]
jne 0x4292dd
push edi
push edx
call fcn.0042b230
add esp, 8
mov byte [esp + 0x15], al
mov dword [esp + 0x24], 0
mov byte [esp + 0x16], 0
jmp 0x429320
cmp byte [esp + 0x17], 0
je 0x42946e
sub edx, dword [esp + 0x38]
sbb edi, 0
add edx, 0xffffffff
adc edi, 0xffffffff
push edi
push edx
call fcn.0042b230
add esp, 8
mov byte [esp + 0x14], al
mov al, byte [esp + 0x15]
mov cl, byte [esp + 0x14]
mov dword [esp + 0x24], 0
mov byte [esp + 0x16], 0
test cl, cl
jne 0x429934
test al, al
jne 0x429934
mov ebx, ebp
mov byte [esp + 0x17], 0
mov ebp, dword [esp + 0x20]
mov eax, 0x5c28f5c3
shrd ebx, ebp, 2
xor edi, edi
mul ebx
shr ebp, 2
mov eax, 0x5c28f5c3
mov ecx, edx
mul ebp
add ecx, eax
mov eax, 0x28f5c28f
adc edi, edx
mul ebx
add eax, ecx
mov ebx, edx
mov eax, 0x28f5c28f
adc ebx, 0
xor ecx, ecx
add ebx, edi
adc ecx, ecx
mul ebp
mov ebp, dword [esp + 0x1c]
add ebx, eax
mov eax, 0x5c28f5c3
adc ecx, edx
xor edi, edi
shrd ebx, ecx, 2
mov dword [esp + 0x64], ebx
mov ebx, dword [esp + 0x28]
shrd ebx, ebp, 2
shr ecx, 2
mul ebx
mov dword [esp + 0x60], ecx
mov eax, 0x5c28f5c3
shr ebp, 2
mov ecx, edx
mul ebp
add ecx, eax
mov eax, 0x28f5c28f
adc edi, edx
mul ebx
add eax, ecx
mov ebx, edx
mov eax, 0x28f5c28f
adc ebx, 0
xor ecx, ecx
add ebx, edi
adc ecx, ecx
mul ebp
add ebx, eax
adc ecx, edx
shrd ebx, ecx, 2
shr ecx, 2
mov dword [esp + 0x78], ebx
mov dword [esp + 0x70], ecx
cmp dword [esp + 0x60], ecx
jb 0x429d08
ja 0x4293e7
cmp dword [esp + 0x64], ebx
jbe 0x429d08
mov ebx, dword [esp + 0x18]
mov eax, 0x5c28f5c3
shrd ebx, esi, 2
xor edi, edi
mov dword [esp + 0x24], 2
mul ebx
shr esi, 2
mov eax, 0x5c28f5c3
mov ebp, esi
mov ecx, edx
mul ebp
add ecx, eax
mov eax, 0x28f5c28f
adc edi, edx
mul ebx
add eax, ecx
mov ebx, edx
mov ecx, dword [esp + 0x18]
mov eax, 0x28f5c28f
adc ebx, 0
xor esi, esi
add ebx, edi
adc esi, esi
mul ebp
mov ebp, dword [esp + 0x78]
add ebx, eax
adc esi, edx
shrd ebx, esi, 2
imul eax, ebx, 0x64
shr esi, 2
mov dword [esp + 0x18], ebx
sub ecx, eax
mov eax, dword [esp + 0x64]
mov dword [esp + 0x30], eax
cmp ecx, 0x32
mov eax, dword [esp + 0x60]
mov dword [esp + 0x20], eax
setae byte [esp + 0x17]
mov eax, dword [esp + 0x70]
mov dword [esp + 0x1c], eax
jmp 0x429d10
add edx, 2
adc edi, 0
push edi
push edx
call fcn.0042b230
movzx eax, al
add esp, 8
cdq
sub ebp, eax
mov dword [esp + 0x30], ebp
sbb dword [esp + 0x20], edx
jmp 0x429303
xor ecx, ecx
mov eax, ebx
neg eax
mov ebp, 0x5b52d0
cmp eax, 1
setg cl
imul edi, ebx, 0xfff4d105
shr edi, 0x14
sub edi, ecx
add ebx, edi
mov dword [esp + 0x78], edi
imul eax, ebx, 0xffed6cb1
mov dword [esp + 0x34], ebx
shr eax, 0x13
sub edi, eax
mov eax, ebx
shl eax, 4
sub ebp, eax
mov dword [esp + 0x24], edi
mov edi, dword [ebp]
mov eax, dword [ebp + 4]
mov dword [esp + 0x44], eax
mov eax, edi
mul edx
mov dword [esp + 0x48], edi
mov ebx, eax
mov ecx, edx
mov eax, edi
mul esi
mov esi, eax
mov edi, edx
mov eax, dword [ebp + 4]
add esi, ecx
adc edi, 0
mul dword [esp + 0x40]
add eax, esi
mov ecx, edx
mov dword [esp + 0x2c], eax
mov eax, dword [ebp + 4]
adc ecx, 0
mul dword [esp + 0x3c]
mov dword [esp + 0x50], eax
mov eax, edx
mov edx, dword [esp + 0x50]
add edx, ecx
adc eax, 0
add edx, edi
mov edi, dword [ebp + 8]
adc eax, 0
mov dword [esp + 0x50], edx
mov dword [esp + 0x68], eax
xor eax, eax
or eax, ebx
mov dword [esp + 0x1c], edi
mov dword [esp + 0x4c], eax
mov eax, dword [ebp + 0xc]
mov dword [esp + 0x28], eax
mov eax, edi
mul dword [esp + 0x40]
mov ebx, eax
mov ecx, edx
mov eax, edi
mul dword [esp + 0x3c]
mov esi, eax
mov edi, edx
mov eax, dword [esp + 0x28]
add esi, ecx
adc edi, 0
mul dword [esp + 0x40]
add eax, esi
mov ecx, edx
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x28]
adc ecx, 0
mul dword [esp + 0x3c]
mov ebp, eax
add ebp, ecx
adc edx, 0
add ebp, edi
adc edx, 0
xor esi, esi
mov ecx, dword [esp + 0x50]
or esi, ebx
mov ebx, dword [esp + 0x18]
add esi, ecx
mov dword [esp + 0x70], esi
adc ebx, dword [esp + 0x68]
mov dword [esp + 0x18], ebx
cmp ebx, dword [esp + 0x68]
ja 0x4295aa
jb 0x4295a1
cmp esi, ecx
jae 0x4295aa
mov eax, 1
xor ecx, ecx
jmp 0x4295bb
xorps xmm0, xmm0
movlpd qword [esp + 0x68], xmm0
mov ecx, dword [esp + 0x6c]
mov eax, dword [esp + 0x68]
add ebp, eax
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x40], ebp
adc edx, ecx
mov ecx, dword [esp + 0x4c]
mov edi, ecx
mov dword [esp + 0x3c], edx
add edi, dword [esp + 0x48]
adc eax, dword [esp + 0x44]
cmp eax, dword [esp + 0x2c]
ja 0x4295ee
jb 0x4295e5
cmp edi, ecx
jae 0x4295ee
mov ecx, 1
xor edx, edx
jmp 0x4295ff
xorps xmm0, xmm0
movlpd qword [esp + 0x68], xmm0
mov edx, dword [esp + 0x6c]
mov ecx, dword [esp + 0x68]
mov eax, esi
mov ebp, ebx
add eax, dword [esp + 0x1c]
adc ebp, dword [esp + 0x28]
add eax, ecx
adc ebp, edx
cmp ebp, ebx
ja 0x429628
jb 0x429619
cmp eax, esi
jae 0x429628
mov edx, 1
mov dword [esp + 0x50], 0
jmp 0x42963d
xorps xmm0, xmm0
movlpd qword [esp + 0x68], xmm0
mov eax, dword [esp + 0x6c]
mov edx, dword [esp + 0x68]
mov dword [esp + 0x50], eax
mov edi, dword [esp + 0x24]
mov eax, 9
sub eax, edi
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x40]
lea ecx, [edi + 0x17]
xor edi, edi
shr ebp, cl
add eax, edx
mov edx, dword [esp + 0x3c]
adc edx, dword [esp + 0x50]
mov ecx, dword [esp + 0x5c]
call fcn.00510c10
or ebp, eax
or edi, edx
cmp dword [esp + 0x38], 1
mov dword [esp + 0x30], ebp
mov dword [esp + 0x20], edi
jne 0x42971e
mov ecx, dword [esp + 0x4c]
mov edi, ecx
sub edi, dword [esp + 0x48]
mov eax, dword [esp + 0x2c]
sbb eax, dword [esp + 0x44]
cmp eax, dword [esp + 0x2c]
jb 0x4296a8
ja 0x42969f
cmp edi, ecx
jbe 0x4296a8
mov ecx, 1
xor edx, edx
jmp 0x4296b9
xorps xmm0, xmm0
movlpd qword [esp + 0x70], xmm0
mov edx, dword [esp + 0x74]
mov ecx, dword [esp + 0x70]
mov eax, esi
sub eax, dword [esp + 0x1c]
sbb ebx, dword [esp + 0x28]
sub eax, ecx
sbb ebx, edx
cmp ebx, dword [esp + 0x18]
jb 0x4296dc
ja 0x4296d3
cmp eax, esi
jbe 0x4296dc
mov edx, 1
xor esi, esi
jmp 0x4296ed
xorps xmm0, xmm0
movlpd qword [esp + 0x70], xmm0
mov esi, dword [esp + 0x74]
mov edx, dword [esp + 0x70]
mov ecx, dword [esp + 0x24]
xor edi, edi
mov eax, dword [esp + 0x40]
lea ecx, [ecx + 0x17]
shr ebx, cl
sub eax, edx
mov edx, dword [esp + 0x3c]
mov ecx, dword [esp + 0x5c]
sbb edx, esi
call fcn.00510c10
or ebx, eax
or edi, edx
mov dword [esp + 0x1c], edi
mov edi, dword [esp + 0x20]
jmp 0x42988b
mov eax, dword [esp + 0x4c]
mov esi, eax
mov edx, dword [esp + 0x2c]
shld edx, esi, 1
add esi, esi
mov dword [esp + 0x68], edx
cmp edx, dword [esp + 0x2c]
ja 0x429750
jb 0x42973e
cmp esi, eax
jae 0x429750
mov dword [esp + 0x50], 1
mov dword [esp + 0x4c], 0
jmp 0x429769
xorps xmm0, xmm0
movlpd qword [esp + 0x50], xmm0
mov eax, dword [esp + 0x54]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x50]
mov dword [esp + 0x50], eax
mov edx, dword [esp + 0x70]
mov eax, ebx
mov ecx, edx
shld eax, ecx, 1
add ecx, ecx
add ecx, dword [esp + 0x50]
adc eax, dword [esp + 0x4c]
mov dword [esp + 0x2c], eax
cmp eax, ebx
ja 0x42979c
jb 0x42978d
cmp ecx, edx
jae 0x42979c
mov ebx, 1
mov dword [esp + 0x50], 0
jmp 0x4297b1
xorps xmm0, xmm0
movlpd qword [esp + 0x70], xmm0
mov eax, dword [esp + 0x74]
mov ebx, dword [esp + 0x70]
mov dword [esp + 0x50], eax
mov edx, dword [esp + 0x40]
mov eax, dword [esp + 0x3c]
shld eax, edx, 1
add edx, edx
add edx, ebx
adc eax, dword [esp + 0x50]
mov dword [esp + 0x50], eax
mov eax, esi
sub eax, dword [esp + 0x48]
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x68]
sbb eax, dword [esp + 0x44]
cmp eax, dword [esp + 0x68]
jb 0x4297fb
ja 0x4297e9
cmp dword [esp + 0x70], esi
jbe 0x4297fb
mov dword [esp + 0x4c], 1
mov dword [esp + 0x48], 0
jmp 0x429814
xorps xmm0, xmm0
movlpd qword [esp + 0x70], xmm0
mov eax, dword [esp + 0x74]
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x70]
mov dword [esp + 0x4c], eax
mov ebx, dword [esp + 0x2c]
mov esi, ecx
sub esi, dword [esp + 0x1c]
sbb ebx, dword [esp + 0x28]
sub esi, dword [esp + 0x4c]
sbb ebx, dword [esp + 0x48]
cmp ebx, dword [esp + 0x2c]
jb 0x429845
ja 0x429836
cmp esi, ecx
jbe 0x429845
mov eax, 1
mov dword [esp + 0x4c], 0
jmp 0x42985a
xorps xmm0, xmm0
movlpd qword [esp + 0x70], xmm0
mov eax, dword [esp + 0x74]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x70]
mov ecx, dword [esp + 0x24]
xor esi, esi
add ecx, 0x18
shr ebx, cl
sub edx, eax
mov eax, dword [esp + 0x4c]
mov ecx, 8
sbb dword [esp + 0x50], eax
mov eax, edx
sub ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x50]
call fcn.00510c10
or ebx, eax
or esi, edx
mov dword [esp + 0x1c], esi
mov ecx, dword [esp + 0x24]
xor esi, esi
mov eax, dword [esp + 0x40]
mov edx, dword [esp + 0x3c]
mov dword [esp + 0x28], ebx
mov ebx, dword [esp + 0x18]
lea ecx, [ecx + 0x17]
shr ebx, cl
mov ecx, dword [esp + 0x5c]
call fcn.00510c10
or ebx, eax
or esi, edx
mov eax, dword [esp + 0x78]
mov dword [esp + 0x18], ebx
cmp eax, 1
ja 0x4298ed
cmp byte [esp + 0x17], 0
mov al, 1
mov byte [esp + 0x15], al
je 0x4298da
mov cl, byte [esp + 0x38]
mov byte [esp + 0x14], cl
jmp 0x42930b
add ebp, 0xffffffff
mov dword [esp + 0x30], ebp
adc edi, 0xffffffff
mov dword [esp + 0x20], edi
jmp 0x429307
cmp eax, 0x3f
jae 0x429303
xor edx, edx
mov dword [esp + 0x24], 0
xor ecx, ecx
dec eax
bts edx, eax
cmp eax, 0x20
cmovae ecx, edx
xor edx, ecx
cmp eax, 0x40
cmovae ecx, edx
add edx, 0xffffffff
adc ecx, 0xffffffff
and edx, dword [esp + 0x60]
and ecx, dword [esp + 0x64]
or edx, ecx
jne 0x429328
mov byte [esp + 0x15], 1
mov byte [esp + 0x16], 0
mov eax, 0xcccccccd
xor edi, edi
mul ebp
mov eax, 0xcccccccd
mov ecx, edx
mul dword [esp + 0x20]
add ecx, eax
mov eax, 0xcccccccc
adc edi, edx
mul ebp
mov ebp, dword [esp + 0x28]
add eax, ecx
mov ebx, edx
mov eax, 0xcccccccc
adc ebx, 0
xor ecx, ecx
mul dword [esp + 0x20]
add ebx, eax
mov eax, 0xcccccccd
adc ecx, edx
add ebx, edi
adc ecx, 0
xor edi, edi
mul ebp
shrd ebx, ecx, 3
mov eax, 0xcccccccd
shr ecx, 3
mov dword [esp + 0x40], ecx
mov ecx, edx
mov dword [esp + 0x2c], ebx
mov ebx, dword [esp + 0x1c]
mul ebx
add ecx, eax
mov eax, 0xcccccccc
adc edi, edx
mul ebp
add eax, ecx
mov dword [esp + 0x20], edx
mov ecx, edx
mov eax, 0xcccccccc
adc ecx, 0
mul ebx
add ecx, eax
mov eax, 0
adc eax, edx
add ecx, edi
adc eax, 0
shrd ecx, eax, 3
shr eax, 3
mov dword [esp + 0x20], ecx
mov dword [esp + 0x64], eax
cmp dword [esp + 0x40], eax
jb 0x429b4d
ja 0x4299f0
cmp dword [esp + 0x2c], ecx
jbe 0x429b4d
nop word [eax + eax]
mov eax, 0xcccccccd
mov ebx, esi
mul dword [esp + 0x18]
xor edi, edi
mov eax, 0xcccccccd
mov ecx, edx
mul ebx
add ecx, eax
mov eax, 0xcccccccc
adc edi, edx
mul dword [esp + 0x18]
add eax, ecx
mov eax, 0xcccccccc
adc edx, 0
xor esi, esi
mov dword [esp + 0x78], edx
mul ebx
mov ebx, dword [esp + 0x78]
add ebx, eax
movzx eax, byte [esp + 0x14]
adc esi, edx
add ebx, edi
mov edi, dword [esp + 0x20]
adc esi, 0
xor edx, edx
shrd ebx, esi, 3
shr esi, 3
lea ecx, [edi + edi*4]
add ecx, ecx
cmp ebp, ecx
mov ebp, edi
cmove edx, eax
movzx eax, byte [esp + 0x15]
xor ecx, ecx
mov byte [esp + 0x14], dl
cmp byte [esp + 0x16], cl
cmove ecx, eax
inc dword [esp + 0x24]
mov byte [esp + 0x15], cl
mov al, bl
shl al, 2
mov cl, bl
add cl, al
xor edi, edi
mov al, byte [esp + 0x18]
add cl, cl
sub al, cl
mov dword [esp + 0x18], ebx
mov byte [esp + 0x16], al
mov eax, dword [esp + 0x64]
mov dword [esp + 0x1c], eax
mov eax, 0xcccccccd
mul dword [esp + 0x2c]
mov eax, 0xcccccccd
mov ecx, edx
mul dword [esp + 0x40]
add ecx, eax
mov eax, 0xcccccccc
adc edi, edx
mul dword [esp + 0x2c]
add eax, ecx
mov dword [esp + 0x2c], edx
mov ecx, edx
mov eax, 0xcccccccc
adc ecx, 0
mul dword [esp + 0x40]
add ecx, eax
mov eax, 0
adc eax, edx
add ecx, edi
adc eax, 0
xor edi, edi
shrd ecx, eax, 3
shr eax, 3
mov dword [esp + 0x40], eax
mov eax, 0xcccccccd
mul ebp
mov dword [esp + 0x2c], ecx
mov eax, 0xcccccccd
mov ecx, edx
mul dword [esp + 0x64]
add ecx, eax
mov eax, 0xcccccccc
adc edi, edx
mul ebp
add eax, ecx
mov dword [esp + 0x20], edx
mov ecx, edx
mov eax, 0xcccccccc
adc ecx, 0
mul dword [esp + 0x64]
add ecx, eax
mov eax, 0
adc eax, edx
add ecx, edi
adc eax, 0
shrd ecx, eax, 3
shr eax, 3
mov dword [esp + 0x20], ecx
mov dword [esp + 0x64], eax
cmp dword [esp + 0x40], eax
ja 0x4299f0
jb 0x429b45
cmp dword [esp + 0x2c], ecx
ja 0x4299f0
mov ebx, dword [esp + 0x1c]
mov dword [esp + 0x28], ebp
mov dl, byte [esp + 0x14]
test dl, dl
je 0x429ca8
mov eax, 0xcccccccd
xor edi, edi
mul ebp
mov eax, 0xcccccccd
mov ecx, edx
mul ebx
add ecx, eax
mov eax, 0xcccccccc
adc edi, edx
mul ebp
add eax, ecx
mov ebx, edx
mov eax, 0xcccccccc
adc ebx, 0
xor ecx, ecx
mul dword [esp + 0x1c]
add ebx, eax
mov eax, ebp
adc ecx, edx
add ebx, edi
adc ecx, 0
shrd ebx, ecx, 3
shr ecx, 3
mov dword [esp + 0x60], ecx
mov dword [esp + 0x40], ebx
lea ecx, [ebx + ebx*4]
add ecx, ecx
sub eax, ecx
jne 0x429ca4
mov ebp, ebx
mov dword [esp + 0x5c], ebp
mov eax, 0xcccccccd
mov ebx, esi
mul dword [esp + 0x18]
xor edi, edi
mov eax, 0xcccccccd
mov ecx, edx
mul ebx
add ecx, eax
mov eax, 0xcccccccc
adc edi, edx
mul dword [esp + 0x18]
add eax, ecx
mov dword [esp + 0x64], edx
mov ecx, edx
mov eax, 0xcccccccc
adc ecx, 0
xor esi, esi
mul ebx
add ecx, eax
adc esi, edx
add ecx, edi
adc esi, 0
shrd ecx, esi, 3
shr esi, 3
cmp byte [esp + 0x16], 0
mov dword [esp + 0x64], ecx
sete al
mov edx, dword [esp + 0x64]
and byte [esp + 0x15], al
xor edi, edi
mov al, cl
inc dword [esp + 0x24]
shl al, 2
add cl, al
mov al, byte [esp + 0x18]
add cl, cl
mov dword [esp + 0x18], edx
mov edx, dword [esp + 0x40]
sub al, cl
mov byte [esp + 0x16], al
mov ecx, edx
mov eax, dword [esp + 0x60]
mov ebx, eax
mov dword [esp + 0x1c], eax
mov eax, 0xcccccccd
mov dword [esp + 0x28], edx
mul ecx
mov eax, 0xcccccccd
mov ecx, edx
mul ebx
add ecx, eax
mov eax, 0xcccccccc
adc edi, edx
mul dword [esp + 0x5c]
add eax, ecx
mov dword [esp + 0x40], edx
mov ecx, edx
adc ecx, 0
xor eax, eax
mov eax, 0xcccccccc
mul ebx
add ecx, eax
mov eax, 0
adc eax, edx
add ecx, edi
adc eax, 0
shrd ecx, eax, 3
shr eax, 3
mov dword [esp + 0x60], eax
mov eax, ecx
mov dword [esp + 0x5c], eax
mov dword [esp + 0x40], ecx
lea eax, [eax + eax*4]
add eax, eax
sub ebp, eax
mov ebp, ecx
je 0x429bb5
mov dl, byte [esp + 0x14]
cmp byte [esp + 0x15], 0
mov cl, byte [esp + 0x16]
je 0x429cc6
cmp cl, 5
jne 0x429cc6
mov eax, dword [esp + 0x18]
and eax, 1
or eax, 0
jne 0x429cc6
mov cl, 4
mov eax, dword [esp + 0x18]
cmp eax, dword [esp + 0x28]
jne 0x429ce9
cmp esi, dword [esp + 0x1c]
jne 0x429ce9
cmp byte [esp + 0x17], 0
je 0x429f1e
test dl, dl
je 0x429f1e
cmp cl, 5
jae 0x429f1e
xorps xmm0, xmm0
movlpd qword [esp + 0x78], xmm0
mov edi, dword [esp + 0x7c]
mov edx, dword [esp + 0x78]
jmp 0x429f25
mov ebx, dword [esp + 0x18]
mov ebp, dword [esp + 0x28]
mov eax, 0xcccccccd
xor edi, edi
mul dword [esp + 0x30]
mov eax, 0xcccccccd
mov ecx, edx
mul dword [esp + 0x20]
add ecx, eax
mov eax, 0xcccccccc
adc edi, edx
mul dword [esp + 0x30]
add eax, ecx
mov dword [esp + 0x28], edx
mov ecx, edx
mov eax, 0xcccccccc
adc ecx, 0
mul dword [esp + 0x20]
add ecx, eax
mov eax, 0
adc eax, edx
add ecx, edi
adc eax, 0
xor edi, edi
shrd ecx, eax, 3
shr eax, 3
mov dword [esp + 0x40], eax
mov eax, 0xcccccccd
mul ebp
mov dword [esp + 0x28], ecx
mov eax, 0xcccccccd
mov ecx, edx
mul dword [esp + 0x1c]
add ecx, eax
mov eax, 0xcccccccc
adc edi, edx
mul ebp
add eax, ecx
mov dword [esp + 0x20], edx
mov ecx, edx
mov eax, 0xcccccccc
adc ecx, 0
mul dword [esp + 0x1c]
add ecx, eax
mov eax, 0
adc eax, edx
add ecx, edi
adc eax, 0
shrd ecx, eax, 3
shr eax, 3
mov dword [esp + 0x20], ecx
mov dword [esp + 0x64], eax
cmp dword [esp + 0x40], eax
jb 0x429ef6
ja 0x429dd0
cmp dword [esp + 0x28], ecx
jbe 0x429ef6
nop word [eax + eax]
mov ebp, ebx
xor edi, edi
mov eax, 0xcccccccd
mov ebx, esi
mul ebp
mov eax, 0xcccccccd
mov ecx, edx
mul ebx
add ecx, eax
mov eax, 0xcccccccc
adc edi, edx
mul ebp
add eax, ecx
mov dword [esp + 0x18], edx
mov ecx, edx
mov eax, 0xcccccccc
adc ecx, 0
xor esi, esi
mul ebx
add ecx, eax
adc esi, edx
add ecx, edi
adc esi, 0
shrd ecx, esi, 3
shr esi, 3
mov dword [esp + 0x18], ecx
lea eax, [ecx + ecx*4]
add eax, eax
sub ebp, eax
mov eax, dword [esp + 0x64]
mov dword [esp + 0x1c], eax
cmp ebp, 5
mov eax, 0xcccccccd
mov ebp, dword [esp + 0x20]
setae byte [esp + 0x17]
inc dword [esp + 0x24]
mul dword [esp + 0x28]
xor edi, edi
mov eax, 0xcccccccd
mov ecx, edx
mul dword [esp + 0x40]
add ecx, eax
mov eax, 0xcccccccc
adc edi, edx
mul dword [esp + 0x28]
add eax, ecx
mov dword [esp + 0x28], edx
mov ecx, edx
mov eax, 0xcccccccc
adc ecx, 0
mul dword [esp + 0x40]
add ecx, eax
mov eax, 0
adc eax, edx
add ecx, edi
adc eax, 0
xor edi, edi
shrd ecx, eax, 3
shr eax, 3
mov dword [esp + 0x40], eax
mov eax, 0xcccccccd
mul ebp
mov dword [esp + 0x28], ecx
mov eax, 0xcccccccd
mov ecx, edx
mul dword [esp + 0x64]
add ecx, eax
mov eax, 0xcccccccc
adc edi, edx
mul ebp
add eax, ecx
mov dword [esp + 0x20], edx
mov ecx, edx
mov eax, 0xcccccccc
adc ecx, 0
mul dword [esp + 0x64]
add ecx, eax
mov eax, 0
adc eax, edx
add ecx, edi
adc eax, 0
mov ebx, dword [esp + 0x18]
shrd ecx, eax, 3
shr eax, 3
mov dword [esp + 0x20], ecx
mov dword [esp + 0x64], eax
cmp dword [esp + 0x40], eax
ja 0x429dd0
jb 0x429ef6
cmp dword [esp + 0x28], ecx
ja 0x429dd0
mov eax, dword [esp + 0x18]
cmp eax, ebp
jne 0x429f04
cmp esi, dword [esp + 0x1c]
je 0x429f1e
cmp byte [esp + 0x17], 0
jne 0x429f1e
xorps xmm0, xmm0
movlpd qword [esp + 0x78], xmm0
mov edi, dword [esp + 0x7c]
mov edx, dword [esp + 0x78]
jmp 0x429f25
mov edx, 1
xor edi, edi
mov ecx, dword [esp + 0x34]
add edx, eax
mov eax, dword [esp + 0x84]
adc edi, esi
add ecx, dword [esp + 0x24]
mov dword [eax + 4], edi
pop edi
pop esi
pop ebp
mov dword [eax + 8], ecx
mov dword [eax], edx
pop ebx
add esp, 0x70
ret