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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0xec
mov edx, dword [ebp + 8]
xor ecx, ecx
and dword [esp + 0x30], ecx
push ebx
mov dword [esp + 0x48], ecx
xor ebx, ebx
mov cl, byte [edx + 0x15]
push esi
mov esi, dword [ebp + 0x10]
and cl, 2
push edi
mov dword [esp + 0x18], esi
mov eax, esi
mov dword [esp + 0x28], ebx
mov byte [esp + 0x15], cl
je 0x100243e9
mov eax, dword [eax]
add esi, 4
mov dword [esp + 0x18], esi
mov dword [esp + 0x3c], eax
mov edi, dword [ebp + 0xc]
movsx eax, byte [edi]
test eax, eax
je case.default.0x1002477b
fldz
fstp qword [esp + 0x60]
fld qword [0x10099a50]
fstp qword [esp + 0xc0]
fld qword [0x10099a48]
fstp qword [esp + 0xc8]
fld1
fstp qword [esp + 0x68]
fld qword [0x10099bb8]
fstp qword [esp + 0xd0]
fld qword [0x10099b88]
fstp qword [esp + 0xd8]
fld qword [0x10099ac0]
fstp qword [esp + 0x70]
fld qword [0x10099a58]
fstp qword [esp + 0xe0]
fld qword [0x10099b60]
fstp qword [esp + 0xe8]
fld qword [0x10099a88]
fstp qword [esp + 0xf0]
mov dword [esp + 0x5c], 3
cmp eax, 0x25
je 0x100244a1
mov ebx, edi
mov dword [esp + 0x28], ebx
inc edi
mov al, byte [edi]
test al, al
je 0x10024486
cmp al, 0x25
jne 0x1002447b
mov eax, edi
sub eax, ebx
push eax
push ebx
push edx
call fcn.10025613
add esp, 0xc
cmp byte [edi], 0
je case.default.0x1002477b
mov edx, dword [ebp + 8]
inc edi
mov dword [esp + 0x38], edi
movsx ecx, byte [edi]
test ecx, ecx
je 0x1002543f
xor al, al
mov byte [esp + 0x27], al
xor eax, eax
mov byte [esp + 0x1f], al
mov byte [esp + 0x17], al
mov byte [esp + 0x16], al
mov byte [esp + 0x14], al
mov byte [esp + 0x12], al
mov byte [esp + 0x13], al
mov dword [esp + 0x20], eax
mov byte [esp + 0x33], al
or eax, 0xffffffff
mov dword [esp + 0x2c], eax
mov edx, esi
cmp ecx, 0x31
jg 0x10024672
je 0x100246a6
cmp ecx, 0x2b
jg 0x100245aa
je 0x100245a0
mov eax, ecx
sub eax, 0x20
je 0x10024596
sub eax, 1
je 0x1002458c
dec eax
sub eax, 1
je 0x10024582
sub eax, 7
jne 0x1002472a
cmp byte [esp + 0x15], al
je 0x10024536
mov ecx, dword [esp + 0x3c]
call fcn.100242f6
mov esi, eax
mov dword [esp + 0x20], eax
jmp 0x10024543
add esi, 4
mov dword [esp + 0x18], esi
mov esi, dword [edx]
mov dword [esp + 0x20], esi
test esi, esi
jns 0x10024561
mov byte [esp + 0x12], 1
cmp esi, 0x80000001
jl 0x1002455c
neg esi
mov dword [esp + 0x20], esi
jmp 0x10024561
and dword [esp + 0x20], 0
mov al, byte [edi + 1]
movsx ecx, al
cmp al, 0x2e
je 0x100246e9
cmp al, 0x6c
je 0x100246e9
inc edi
mov byte [esp + 0x13], 1
jmp 0x100246e5
mov byte [esp + 0x17], 1
jmp 0x100246f4
mov byte [esp + 0x1f], 1
jmp 0x100246f4
mov byte [esp + 0x14], 0x20
jmp 0x100246f4
mov byte [esp + 0x14], 0x2b
jmp 0x100246f4
mov eax, ecx
sub eax, 0x2c
je 0x10024668
sub eax, 1
je 0x1002465e
sub eax, 1
je 0x100245d7
dec eax
sub eax, 1
jne 0x1002472a
mov byte [esp + 0x27], 1
jmp 0x100246f4
inc edi
mov dword [esp + 0x38], edi
movsx ecx, byte [edi]
cmp ecx, 0x2a
jne 0x10024625
cmp byte [esp + 0x15], 0
je 0x100245f6
mov ecx, dword [esp + 0x3c]
call fcn.100242f6
jmp 0x100245ff
mov eax, dword [edx]
add esi, 4
mov dword [esp + 0x18], esi
mov dword [esp + 0x2c], eax
test eax, eax
jns 0x1002461b
cmp eax, 0x80000001
jl 0x10024616
neg eax
mov dword [esp + 0x2c], eax
jmp 0x1002461b
or dword [esp + 0x2c], 0xffffffff
inc edi
mov dword [esp + 0x38], edi
movsx ecx, byte [edi]
jmp 0x1002464f
xor eax, eax
cmp ecx, 0x30
jl 0x10024646
cmp ecx, 0x39
ja 0x10024642
imul eax, eax, 0xa
add ecx, 0xffffffd0
add eax, ecx
inc edi
movsx ecx, byte [edi]
cmp ecx, 0x30
jge 0x1002462c
mov dword [esp + 0x38], edi
and eax, 0x7fffffff
mov dword [esp + 0x2c], eax
cmp ecx, 0x6c
jne 0x1002472a
dec edi
jmp 0x100246f4
mov byte [esp + 0x12], 1
jmp 0x100246f4
mov byte [esp + 0x16], 0x2c
jmp 0x100246f4
cmp ecx, 0x36
jg 0x10024695
je 0x100246a6
mov eax, ecx
sub eax, 0x32
je 0x100246a6
sub eax, 1
je 0x100246a6
sub eax, 1
je 0x100246a6
sub eax, 1
jne 0x1002472a
jmp 0x100246a6
mov eax, ecx
sub eax, 0x37
je 0x100246a6
sub eax, 1
je 0x100246a6
sub eax, 1
jne 0x10024706
inc edi
lea esi, [ecx - 0x30]
mov dword [esp + 0x38], edi
movsx ecx, byte [edi]
cmp ecx, 0x30
jl 0x100246d0
cmp ecx, 0x39
ja 0x100246cc
imul eax, esi, 0xa
lea esi, [ecx - 0x30]
add esi, eax
inc edi
movsx ecx, byte [edi]
cmp ecx, 0x30
jge 0x100246b6
mov dword [esp + 0x38], edi
and esi, 0x7fffffff
mov dword [esp + 0x20], esi
cmp ecx, 0x2e
je 0x100246e4
cmp ecx, 0x6c
jne 0x1002472a
dec edi
mov dword [esp + 0x38], edi
cmp byte [esp + 0x13], 0
jne 0x1002472a
mov esi, dword [esp + 0x18]
inc edi
mov dword [esp + 0x38], edi
movsx ecx, byte [edi]
test ecx, ecx
jne 0x100244e0
jmp 0x1002472a
sub eax, 0x33
jne 0x1002472a
inc edi
mov byte [esp + 0x33], 1
mov dword [esp + 0x38], edi
movsx ecx, byte [edi]
cmp ecx, 0x6c
jne 0x1002472a
inc edi
mov byte [esp + 0x33], 2
mov dword [esp + 0x38], edi
movsx ecx, byte [edi]
mov edx, dword [esp + 0x18]
mov esi, 0x1008fbc0
mov dword [esp + 0x58], esi
xor edi, edi
mov byte [esp + 0x13], 0x11
movsx eax, byte [esi]
cmp ecx, eax
je 0x1002475b
add esi, 6
inc edi
cmp esi, 0x1008fc4a
jl 0x1002473e
mov cl, byte [esp + 0x13]
mov esi, dword [esp + 0x58]
jmp 0x1002476f
imul esi, edi, 6
add esi, 0x1008fbc0
mov dword [esp + 0x58], esi
mov cl, byte [esi + 3]
mov byte [esp + 0x13], cl
movzx eax, cl
cmp eax, 0x10
ja case.default.0x1002477b
jmp dword [eax*4 + 0x10025459]
mov byte [esp + 0x33], 1
mov byte [esp + 0x16], 0
test byte [esi + 2], 1
je 0x100247f4
cmp byte [esp + 0x15], 0
je 0x100247a4
mov ecx, dword [esp + 0x3c]
call fcn.100242f6
jmp 0x100247c4
mov al, byte [esp + 0x33]
test al, al
je 0x100247bc
cmp al, 2
jne 0x100247bc
add dword [esp + 0x18], 8
mov edi, dword [edx]
mov esi, dword [edx + 4]
jmp 0x100247c8
mov eax, dword [edx]
add dword [esp + 0x18], 4
cdq
mov edi, eax
mov esi, edx
test esi, esi
jg 0x100247ee
jl 0x100247d2
test edi, edi
jae 0x100247ee
test edi, edi
jne 0x100247e3
mov eax, 0x80000000
cmp esi, eax
jne 0x100247e3
mov esi, eax
jmp 0x100247ea
neg edi
adc esi, 0
neg esi
mov cl, 0x2d
jmp 0x1002482b
mov cl, byte [esp + 0x14]
jmp 0x1002482f
cmp byte [esp + 0x15], 0
je 0x1002480a
mov ecx, dword [esp + 0x3c]
call fcn.100242f6
mov edi, eax
mov esi, edx
jmp 0x10024829
mov al, byte [esp + 0x33]
mov edi, dword [edx]
test al, al
je 0x10024822
cmp al, 2
jne 0x10024822
add dword [esp + 0x18], 8
mov esi, dword [edx + 4]
jmp 0x10024829
add dword [esp + 0x18], 4
xor esi, esi
xor cl, cl
mov byte [esp + 0x14], cl
mov eax, edi
or eax, esi
jne 0x10024839
mov byte [esp + 0x17], al
cmp byte [esp + 0x27], 0
je 0x1002485d
xor eax, eax
test cl, cl
mov ecx, dword [esp + 0x20]
setne al
sub ecx, eax
mov eax, dword [esp + 0x2c]
cmp eax, ecx
jge 0x10024861
mov eax, ecx
mov dword [esp + 0x2c], eax
jmp 0x10024861
mov eax, dword [esp + 0x2c]
cmp eax, 0x25
jge 0x10024877
push 0x46
pop ebx
lea eax, [esp + 0x78]
mov dword [esp + 0x34], ebx
mov dword [esp + 0x48], eax
jmp 0x100248bf
cdq
mov ebx, eax
mov ecx, edx
push 0xa
pop eax
add ebx, eax
mov dword [esp + 0x34], ebx
adc ecx, 0
cmp byte [esp + 0x16], 0
je 0x100248a1
mov eax, dword [esp + 0x2c]
cdq
idiv dword [esp + 0x5c]
cdq
add ebx, eax
mov dword [esp + 0x34], ebx
adc ecx, edx
push ecx
mov ecx, dword [ebp + 8]
push ebx
call fcn.1002433a
pop ecx
pop ecx
mov ecx, eax
mov dword [esp + 0x48], eax
mov dword [esp + 0x50], ecx
test ecx, ecx
je case.default.0x1002477b
dec eax
add eax, ebx
cmp byte [esp + 0x13], 0xf
mov dword [esp + 0x28], eax
jne 0x10024922
push 0
push 0xa
pop eax
push eax
push esi
push edi
call fcn.10086d80
mov ebx, eax
cmp ebx, 4
jge 0x10024902
push 0
push 0xa
pop eax
push eax
push esi
push edi
call fcn.10086d10
push 0
push 0xa
push edx
push eax
call fcn.10086d80
cmp eax, 1
jne 0x10024904
test edx, edx
jne 0x10024904
xor ebx, ebx
mov ecx, dword [esp + 0x28]
mov al, byte [ebx*2 + 0x1008cb8d]
mov byte [ecx - 1], al
sub ecx, 2
mov al, byte [ebx*2 + str.thstndrd]
mov dword [esp + 0x28], ecx
mov byte [ecx], al
mov eax, dword [esp + 0x58]
movzx ebx, byte [eax + 4]
movzx eax, byte [eax + 1]
add ebx, 0x1008c4a0
cdq
mov ecx, edx
mov dword [esp + 0x54], eax
mov dword [esp + 0x40], ecx
dec dword [esp + 0x28]
push ecx
push eax
push esi
push edi
call fcn.10086d80
push dword [esp + 0x40]
mov ecx, dword [esp + 0x2c]
push dword [esp + 0x58]
mov al, byte [eax + ebx]
push esi
push edi
mov byte [ecx], al
call fcn.10086d10
mov ecx, dword [esp + 0x40]
mov esi, edx
mov edi, eax
mov eax, dword [esp + 0x54]
test esi, esi
ja 0x1002493f
jb 0x1002497a
test edi, edi
jne 0x1002493f
mov edi, dword [esp + 0x34]
mov edx, dword [esp + 0x48]
mov eax, edx
mov ebx, dword [esp + 0x28]
sub eax, ebx
mov esi, dword [esp + 0x2c]
lea ecx, [edi - 1]
add ecx, eax
cmp ecx, esi
jge 0x100249aa
mov eax, esi
sub eax, ecx
mov ecx, esi
dec ebx
mov byte [ebx], 0x30
sub eax, 1
jne 0x1002499d
mov dword [esp + 0x28], ebx
cmp byte [esp + 0x16], 0
je 0x100249fb
lea eax, [ecx - 1]
push 3
cdq
pop esi
idiv esi
push 3
mov esi, eax
lea eax, [ecx - 1]
pop ecx
cdq
sub ebx, esi
idiv ecx
xor ecx, ecx
mov dword [esp + 0x28], ebx
inc edx
test esi, esi
jle 0x100249f7
push 3
pop edi
lea eax, [esi + ecx]
mov al, byte [eax + ebx]
mov byte [ecx + ebx], al
sub edx, 1
jne 0x100249ee
mov al, byte [esp + 0x16]
inc ecx
dec esi
mov edx, edi
mov byte [ecx + ebx], al
inc ecx
test esi, esi
jg 0x100249d5
mov edi, dword [esp + 0x34]
mov edx, dword [esp + 0x48]
mov al, byte [esp + 0x14]
test al, al
je 0x10024a0a
dec ebx
mov dword [esp + 0x28], ebx
mov byte [ebx], al
cmp byte [esp + 0x17], 0
je 0x10024a38
mov eax, dword [esp + 0x58]
mov al, byte [eax + 5]
test al, al
je 0x10024a38
movzx eax, al
add eax, 0x1008b6c0
mov cl, byte [eax]
test cl, cl
je 0x10024a38
dec ebx
inc eax
mov byte [ebx], cl
mov cl, byte [eax]
test cl, cl
jne 0x10024a2a
mov dword [esp + 0x28], ebx
sub edx, ebx
lea esi, [edx - 1]
add esi, edi
mov edx, dword [esp + 0x20]
mov al, byte [esp + 0x12]
sub edx, esi
mov dword [esp + 0x20], edx
test edx, edx
jle 0x10025401
test al, al
jne 0x10024a67
push 0x20
push edx
push dword [ebp + 8]
call fcn.1002559e
add esp, 0xc
push esi
mov esi, dword [ebp + 8]
push ebx
push esi
call fcn.10025613
add esp, 0xc
cmp byte [esp + 0x12], 0
je 0x1002540f
push 0x20
push dword [esp + 0x24]
push esi
call fcn.1002559e
jmp 0x1002540c
cmp byte [esp + 0x15], 0
je 0x10024ac0
mov ebx, dword [esp + 0x3c]
mov edx, dword [ebx + 4]
cmp dword [ebx], edx
jg 0x10024aa9
fld qword [esp + 0x60]
jmp 0x10024ac7
mov eax, dword [ebx + 8]
mov ecx, dword [eax + edx*4]
lea eax, [edx + 1]
mov dword [ebx + 4], eax
call fcn.1003a270
mov cl, byte [esp + 0x13]
jmp 0x10024ac7
add dword [esp + 0x18], 8
fld qword [edx]
mov edi, dword [esp + 0x2c]
fst qword [esp + 0x48]
test edi, edi
jns 0x10024ada
push 6
pop edi
mov dword [esp + 0x2c], edi
fld qword [esp + 0x60]
fcom st(1)
fnstsw ax
test ah, 0x41
jne 0x10024af6
fxch st(1)
mov byte [esp + 0x14], 0x2d
fchs
fst qword [esp + 0x48]
fxch st(1)
cmp cl, 3
jne 0x10024b04
test edi, edi
je 0x10024b04
dec edi
mov dword [esp + 0x2c], edi
mov ecx, edi
xor edx, edx
and ecx, 0xfff
push 0xa
pop esi
mov eax, ecx
div esi
fld qword [edx*8 + 0x100907e0]
cmp ecx, esi
jb 0x10024b36
fld qword [esp + 0xc0]
mov eax, ecx
xor edx, edx
div esi
fmul st(1), st(0)
sub eax, 1
jne 0x10024b2d
fstp st(0)
cmp byte [esp + 0x13], 1
jne 0x10024b7e
fstp st(1)
fxch st(1)
fst qword [esp + 0x40]
mov eax, dword [esp + 0x44]
shr eax, 0x14
and eax, 0x7ff
sub eax, 0x3ff
push 3
cdq
pop ecx
idiv ecx
add eax, edi
cmp eax, 0xf
jge 0x10024b6e
fld st(0)
fmul qword [esp + 0xc8]
faddp st(2)
fld st(1)
faddp st(1)
fst qword [esp + 0x48]
fld qword [esp + 0x60]
fxch st(1)
fxch st(2)
push ecx
push ecx
xor ebx, ebx
fxch st(2)
fst qword [esp]
mov dword [esp + 0x3c], ebx
call fcn.100260a9
pop ecx
pop ecx
test eax, eax
je 0x10024baf
fstp st(1)
mov ebx, 0x10093dfc
push 3
fstp st(0)
mov dword [esp + 0x2c], ebx
pop eax
fstp st(0)
mov esi, eax
jmp 0x10024a3f
fcom st(1)
fnstsw ax
fstp st(1)
test ah, 0x41
jne 0x10024d30
fld qword [esp + 0x68]
mov ecx, 0x15e
fld st(0)
fld qword [esp + 0xd0]
fcom st(3)
fnstsw ax
test ah, 0x41
jp 0x10024bf9
push 0x64
pop edi
cmp ebx, ecx
jg 0x10024bf1
fmul st(1), st(0)
add ebx, edi
fld st(1)
fmul st(1)
fcomp st(4)
fnstsw ax
test ah, 0x41
jnp 0x10024bdc
mov edi, dword [esp + 0x2c]
mov dword [esp + 0x34], ebx
fstp st(0)
fld st(0)
fld qword [esp + 0xd8]
fmul st(1), st(0)
fxch st(4)
fcom st(1)
fnstsw ax
test ah, 1
je 0x10024c57
fstp st(1)
fstp st(3)
fld st(0)
fld qword [esp + 0x70]
fmul st(1), st(0)
fxch st(4)
fcom st(1)
fnstsw ax
test ah, 1
je 0x10024c82
fstp st(1)
fdivrp st(1)
fst qword [esp + 0x48]
fld st(0)
fld qword [esp + 0xe0]
fcom st(2)
fnstsw ax
test ah, 0x41
jne 0x10024cd9
fstp st(1)
fstp st(2)
fld qword [esp + 0xe8]
jmp 0x10024ca6
fxch st(1)
fxch st(2)
cmp ebx, ecx
jg 0x10024c78
fstp st(2)
add ebx, esi
fld st(0)
fmul st(4)
fcom st(2)
fnstsw ax
test ah, 0x41
jnp 0x10024c53
fstp st(0)
fstp st(3)
fxch st(2)
mov dword [esp + 0x34], ebx
jmp 0x10024c15
fstp st(1)
fstp st(3)
jmp 0x10024c72
fxch st(1)
fxch st(2)
cmp ebx, ecx
jg 0x10024ca0
fstp st(2)
inc ebx
fld st(0)
fmul st(4)
fcom st(2)
fnstsw ax
test ah, 0x41
jnp 0x10024c7e
fstp st(0)
fxch st(1)
mov dword [esp + 0x34], ebx
jmp 0x10024c2a
fstp st(1)
jmp 0x10024c9a
fstp st(2)
fmul st(1), st(0)
sub ebx, 8
fld st(1)
fxch st(2)
fst qword [esp + 0x48]
fcom st(3)
fnstsw ax
test ah, 5
jnp 0x10024ca4
fstp st(3)
mov dword [esp + 0x34], ebx
fstp st(0)
fld qword [esp + 0x68]
fxch st(2)
fxch st(1)
fcom st(2)
fnstsw ax
test ah, 5
jp 0x10024cfb
fstp st(1)
jmp 0x10024cdf
fstp st(0)
jmp 0x10024ccc
fstp st(0)
fmul st(2)
dec ebx
fst qword [esp + 0x48]
fld st(0)
fxch st(1)
fcom st(2)
fnstsw ax
test ah, 5
jnp 0x10024cdd
fstp st(1)
mov dword [esp + 0x34], ebx
jmp 0x10024cfd
fstp st(0)
fstp st(1)
cmp ebx, ecx
jle 0x10024d36
mov cl, byte [esp + 0x14]
lea ebx, [esp + 0x78]
xor eax, eax
mov byte [esp + 0x78], cl
test cl, cl
mov dword [esp + 0x28], ebx
fstp st(0)
setne al
fstp st(1)
fstp st(0)
mov dword [esp + eax + 0x78], 0x666e49
lea esi, [eax + 3]
jmp 0x10024a3f
fld qword [esp + 0x70]
fxch st(1)
mov cl, byte [esp + 0x13]
lea esi, [esp + 0x78]
cmp cl, 1
je 0x10024d68
faddp st(2)
fxch st(1)
fst qword [esp + 0x48]
fcom st(1)
fnstsw ax
fstp st(1)
test ah, 1
jne 0x10024d6c
fmul qword [esp + 0xf0]
inc ebx
mov dword [esp + 0x34], ebx
fstp qword [esp + 0x48]
jmp 0x10024d6e
fstp st(0)
fstp st(1)
fstp st(0)
mov dword [esp + 0x54], ebx
cmp cl, 3
jne 0x10024da6
cmp byte [esp + 0x17], 0
sete byte [esp + 0x16]
cmp ebx, 0xfffffffc
jl 0x10024d9f
cmp ebx, edi
jg 0x10024d9f
sub edi, ebx
mov byte [esp + 0x13], 1
mov dword [esp + 0x2c], edi
mov edi, ebx
test ebx, ebx
jle 0x10024db5
mov eax, ebx
jmp 0x10024db7
mov byte [esp + 0x13], 2
jmp 0x10024db3
mov al, byte [esp + 0x1f]
mov byte [esp + 0x16], al
cmp cl, 2
jne 0x10024d95
xor edi, edi
xor eax, eax
cdq
mov ecx, eax
mov dword [esp + 0x40], edx
mov eax, dword [esp + 0x2c]
cdq
add ecx, eax
mov eax, dword [esp + 0x20]
adc dword [esp + 0x40], edx
cdq
add ecx, eax
mov eax, dword [esp + 0x40]
adc eax, edx
add ecx, 0xf
adc eax, 0
js 0x10024dff
jg 0x10024de5
cmp ecx, 0x46
jbe 0x10024dff
push eax
push ecx
mov ecx, dword [ebp + 8]
call fcn.1002433a
mov dword [esp + 0x58], eax
mov esi, eax
pop ecx
pop ecx
test eax, eax
je case.default.0x1002477b
movzx eax, byte [esp + 0x1f]
mov ecx, dword [esp + 0x2c]
mov dl, byte [esp + 0x14]
imul eax, eax, 0xa
mov dword [esp + 0x28], esi
add eax, 0x10
test ecx, ecx
mov dword [esp + 0x40], eax
setg al
or al, byte [esp + 0x1f]
or al, byte [esp + 0x17]
mov byte [esp + 0x17], al
test dl, dl
je 0x10024e32
mov byte [esi], dl
inc esi
test edi, edi
jns 0x10024e3c
mov byte [esi], 0x30
inc esi
jmp 0x10024e59
lea edx, [esp + 0x40]
lea ecx, [esp + 0x48]
call fcn.1002428e
mov byte [esi], al
inc esi
sub edi, 1
jns 0x10024e3c
mov al, byte [esp + 0x17]
mov ecx, dword [esp + 0x2c]
test al, al
je 0x10024e61
mov byte [esi], 0x2e
inc esi
add edi, 1
jns 0x10024e80
neg edi
push edi
push 0x30
push esi
call sub.VCRUNTIME140.dll_memset
mov ecx, dword [esp + 0x38]
add esp, 0xc
add esi, edi
sub ecx, edi
mov dword [esp + 0x2c], ecx
test ecx, ecx
jle 0x10024ea1
mov ebx, dword [esp + 0x2c]
lea edx, [esp + 0x40]
dec ebx
lea ecx, [esp + 0x48]
call fcn.1002428e
mov byte [esi], al
inc esi
test ebx, ebx
jg 0x10024e88
mov ebx, dword [esp + 0x34]
cmp byte [esp + 0x16], 0
je 0x10024ed2
cmp byte [esp + 0x17], 0
je 0x10024ed2
jmp 0x10024eb5
dec esi
mov byte [esi], 0
cmp byte [esi - 1], 0x30
je 0x10024eb1
cmp byte [esi - 1], 0x2e
jne 0x10024ed2
cmp byte [esp + 0x1f], 0
je 0x10024ece
mov byte [esi], 0x30
inc esi
jmp 0x10024ed2
dec esi
mov byte [esi], 0
cmp byte [esp + 0x13], 2
jne 0x10024f38
mov eax, dword [esp + 0x58]
lea ecx, [esi + 1]
movzx eax, byte [eax + 4]
mov al, byte [eax + 0x1008c4a0]
mov byte [esi], al
add esi, 2
test ebx, ebx
jns 0x10024ef5
neg ebx
cmp dword [esp + 0x54], 0
push 0x64
setl al
lea eax, [eax*2 + 0x2b]
mov byte [ecx], al
pop ecx
cmp ebx, ecx
jl 0x10024f1e
mov eax, ebx
cdq
idiv ecx
add al, 0x30
mov byte [esi], al
mov eax, ebx
cdq
inc esi
idiv ecx
mov ebx, edx
mov eax, ebx
cdq
push 0xa
pop ecx
idiv ecx
add al, 0x30
mov byte [esi], al
mov eax, ebx
cdq
idiv ecx
add dl, 0x30
mov byte [esi + 1], dl
add esi, 2
mov ebx, dword [esp + 0x28]
mov al, byte [esp + 0x12]
mov edx, dword [esp + 0x20]
mov byte [esi], 0
sub esi, ebx
cmp byte [esp + 0x27], 0
je 0x10024a47
test al, al
jne 0x10024a47
cmp esi, edx
jge 0x10024a47
mov ecx, edx
sub ecx, esi
mov esi, edx
cmp esi, ecx
jl 0x10024f81
mov esi, ebx
sub esi, ecx
mov al, byte [esi + edx]
mov byte [edx + ebx], al
dec edx
cmp edx, ecx
jge 0x10024f72
mov esi, dword [esp + 0x20]
xor eax, eax
cmp byte [esp + 0x14], al
setne al
test ecx, ecx
je 0x10024a3f
push ecx
add eax, ebx
push 0x30
push eax
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
jmp 0x10024a3f
cmp byte [esp + 0x15], 0
jne 0x100253ff
mov eax, dword [ebp + 8]
mov ecx, dword [edx]
add dword [esp + 0x18], 4
mov eax, dword [eax + 0x10]
mov dword [ecx], eax
jmp 0x100253ff
lea ebx, [esp + 0x78]
mov byte [esp + 0x78], 0x25
xor esi, esi
mov dword [esp + 0x28], ebx
inc esi
jmp 0x10024a3f
cmp byte [esp + 0x15], 0
je 0x10025033
mov ecx, dword [esp + 0x3c]
call fcn.10024318
xor esi, esi
mov edx, eax
inc esi
test edx, edx
je 0x10025029
mov cl, byte [edx]
mov ebx, 0xc0
mov byte [esp + 0x78], cl
inc edx
movsx ecx, cl
and ecx, ebx
cmp cl, bl
jne 0x100250d0
mov cl, byte [edx]
mov al, cl
and al, bl
cmp al, 0x80
jne 0x100250d0
mov byte [esp + esi + 0x78], cl
inc esi
inc edx
cmp esi, 4
jl 0x1002500b
jmp 0x100250d0
mov byte [esp + 0x78], 0
jmp 0x100250d0
add dword [esp + 0x18], 4
mov ecx, dword [edx]
cmp ecx, 0x80
jae 0x1002504e
xor esi, esi
mov byte [esp + 0x78], cl
inc esi
jmp 0x100250d0
mov eax, ecx
cmp ecx, 0x800
jae 0x10025071
shr eax, 6
and cl, 0x3f
and al, 0x1f
sub al, 0x40
add cl, 0x80
mov byte [esp + 0x78], al
mov byte [esp + 0x79], cl
push 2
jmp 0x100250cf
push 0x3f
mov dl, cl
pop ebx
and dl, bl
add dl, 0x80
cmp ecx, 0x10000
jae 0x100250a5
shr eax, 0xc
and al, 0xf
shr ecx, 6
sub al, 0x20
mov byte [esp + 0x7a], dl
and cl, bl
mov byte [esp + 0x78], al
push 3
add cl, 0x80
pop eax
mov byte [esp + 0x79], cl
mov esi, eax
jmp 0x100250d0
shr eax, 0x12
and al, 7
mov byte [esp + 0x7b], dl
sub al, 0x10
mov byte [esp + 0x78], al
mov eax, ecx
shr eax, 0xc
shr ecx, 6
and al, bl
add al, 0x80
and cl, bl
add cl, 0x80
mov byte [esp + 0x79], al
mov byte [esp + 0x7a], cl
push 4
pop esi
mov ebx, dword [esp + 0x2c]
cmp ebx, 1
jle 0x1002511f
mov ecx, dword [esp + 0x20]
sub ecx, ebx
mov eax, ecx
inc ecx
mov dword [esp + 0x20], ecx
cmp ecx, 1
jle 0x10025106
cmp byte [esp + 0x12], 0
jne 0x10025106
push 0x20
push eax
mov eax, dword [ebp + 8]
push eax
call fcn.1002559e
add esp, 0xc
and dword [esp + 0x20], 0
lea edi, [ebx - 1]
push esi
lea eax, [esp + 0x7c]
push eax
push dword [ebp + 8]
call fcn.10025613
add esp, 0xc
sub edi, 1
jne 0x10025109
lea ebx, [esp + 0x78]
mov dword [esp + 0x28], ebx
jmp 0x1002535a
cmp byte [esp + 0x15], 0
je 0x10025146
mov ecx, dword [esp + 0x3c]
call fcn.10024318
mov ebx, eax
mov dword [esp + 0x28], eax
mov cl, 5
jmp 0x10025151
mov ebx, dword [edx]
add dword [esp + 0x18], 4
mov dword [esp + 0x28], ebx
test ebx, ebx
jne 0x10025160
mov ebx, 0x10091798
mov dword [esp + 0x28], ebx
jmp 0x100251be
cmp cl, 6
jne 0x100251be
mov esi, dword [ebp + 8]
cmp dword [esi + 0x10], 0
jne 0x100251ba
cmp dword [esi + 0xc], 0
je 0x100251ba
cmp dword [esp + 0x20], 0
jne 0x100251ba
mov eax, dword [esp + 0x2c]
test eax, eax
jns 0x100251ba
cmp byte [esi + 0x14], 0
jne 0x100251ba
mov ecx, dword [esi]
mov edx, ebx
mov dword [esi + 4], ebx
call fcn.10023d49
mov ecx, ebx
mov dword [esi + 8], eax
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1002519d
or byte [esi + 0x15], 4
sub ecx, edx
and ecx, 0x7fffffff
mov dword [esi + 0x10], ecx
xor esi, esi
jmp 0x10024a3f
mov dword [esp + 0x50], ebx
mov ecx, dword [esp + 0x2c]
test ecx, ecx
js 0x10025211
cmp byte [esp + 0x1f], 0
je 0x100251f3
mov esi, ebx
jmp 0x100251e8
mov al, byte [esi]
dec ecx
test al, al
je 0x100251ec
inc esi
cmp al, 0xc0
jb 0x100251e8
jmp 0x100251e0
inc esi
mov al, byte [esi]
and al, 0xc0
cmp al, 0x80
je 0x100251df
test ecx, ecx
jg 0x100251d1
sub esi, ebx
jmp 0x1002535a
xor esi, esi
test ecx, ecx
jle 0x10024a3f
cmp byte [esi + ebx], 0
je 0x10024a3f
inc esi
cmp esi, ecx
jl 0x100251fd
jmp 0x10024a3f
mov esi, ebx
lea ecx, [esi + 1]
mov al, byte [esi]
inc esi
test al, al
jne 0x10025216
sub esi, ecx
and esi, 0x7fffffff
jmp 0x1002534f
cmp cl, 0xe
setne bl
dec bl
and bl, 0xfb
add bl, 0x27
cmp byte [esp + 0x15], 0
mov byte [esp + 0x27], bl
je 0x10025254
mov ecx, dword [esp + 0x3c]
call fcn.10024318
mov ecx, eax
mov dword [esp + 0x34], eax
jmp 0x1002525f
mov ecx, dword [edx]
add dword [esp + 0x18], 4
mov dword [esp + 0x34], ecx
mov bh, byte [esp + 0x13]
mov esi, ecx
mov dword [esp + 0x40], esi
test ecx, ecx
jne 0x10025280
mov ecx, str.NULL
cmp bh, 0xa
je 0x1002527c
mov ecx, str._NULL_
mov dword [esp + 0x34], ecx
mov eax, dword [esp + 0x2c]
xor edx, edx
xor edi, edi
test eax, eax
je 0x100252c5
mov esi, eax
mov ah, byte [esp + 0x1f]
mov al, byte [edi + ecx]
test al, al
je 0x100252c1
cmp al, bl
jne 0x1002529e
inc edx
test ah, ah
je 0x100252bb
and al, 0xc0
cmp al, 0xc0
jne 0x100252bb
inc ecx
add ecx, edi
mov al, byte [ecx]
and al, 0xc0
cmp al, 0x80
jne 0x100252b7
inc edi
inc ecx
jmp 0x100252ab
mov ecx, dword [esp + 0x34]
inc edi
sub esi, 1
jne 0x10025292
mov esi, dword [esp + 0x40]
test esi, esi
je 0x100252d3
cmp bh, 0xa
jne 0x100252d3
xor ebx, ebx
inc ebx
jmp 0x100252d5
xor ebx, ebx
lea eax, [edi + 3]
mov dword [esp + 0x40], ebx
add eax, edx
cmp eax, 0x46
jle 0x10025304
mov ecx, dword [ebp + 8]
cdq
push edx
push eax
call fcn.1002433a
pop ecx
pop ecx
mov ecx, eax
mov dword [esp + 0x50], ecx
mov dword [esp + 0x28], ecx
test ecx, ecx
je case.default.0x1002477b
jmp 0x1002530c
lea eax, [esp + 0x78]
mov dword [esp + 0x28], eax
mov ch, byte [esp + 0x27]
xor esi, esi
test ebx, ebx
je 0x10025319
mov byte [eax], ch
inc esi
xor eax, eax
test edi, edi
jle 0x1002533f
mov edx, dword [esp + 0x34]
mov ebx, dword [esp + 0x28]
mov cl, byte [eax + edx]
mov byte [esi + ebx], cl
inc esi
cmp cl, ch
jne 0x10025336
mov byte [esi + ebx], cl
inc esi
inc eax
cmp eax, edi
jl 0x10025327
mov ebx, dword [esp + 0x40]
test ebx, ebx
mov ebx, dword [esp + 0x28]
je 0x1002534b
mov byte [esi + ebx], ch
inc esi
mov byte [esi + ebx], 0
cmp byte [esp + 0x1f], 0
je 0x10024a3f
mov edx, dword [esp + 0x20]
test edx, edx
jle 0x10024a43
lea ecx, [esi - 1]
jmp 0x10025376
mov al, byte [ecx + ebx]
and al, 0xc0
dec ecx
cmp al, 0x80
jne 0x10025376
inc edx
test ecx, ecx
jns 0x1002536b
jmp 0x10024a43
mov ecx, dword [ebp + 8]
test byte [ecx + 0x15], 1
je case.default.0x1002477b
add dword [esp + 0x18], 4
mov eax, dword [edx]
test eax, eax
je 0x100253ff
cmp dword [eax + 4], 0
je 0x100253ff
push dword [eax + 4]
push dword [eax]
push ecx
call fcn.10025613
add esp, 0xc
jmp 0x100253ff
mov ecx, dword [ebp + 8]
test byte [ecx + 0x15], 1
je case.default.0x1002477b
mov eax, dword [esp + 0x18]
mov ebx, dword [eax]
lea edi, [eax + 8]
imul esi, dword [edi - 4], 0x48
mov eax, dword [esi + ebx + 0xc]
test eax, eax
je 0x100253eb
push eax
push ecx
call fcn.10025657
push 1
push 0x1009270c
push dword [ebp + 8]
call fcn.10025613
mov ecx, dword [ebp + 8]
add esp, 0x14
push dword [esi + ebx + 0x10]
push ecx
call fcn.10025657
mov ebx, dword [esp + 0x30]
pop ecx
pop ecx
mov dword [esp + 0x18], edi
xor esi, esi
push esi
mov esi, dword [ebp + 8]
push ebx
push esi
call fcn.10025613
add esp, 0xc
mov ecx, dword [esp + 0x50]
test ecx, ecx
je 0x10025426
mov edx, ecx
mov ecx, dword [esi]
call fcn.10023dc7
xor ecx, ecx
mov dword [esp + 0x50], ecx
mov edi, dword [esp + 0x38]
mov esi, dword [esp + 0x18]
inc edi
mov edx, dword [ebp + 8]
movsx eax, byte [edi]
test eax, eax
jne 0x10024470
jmp case.default.0x1002477b
push 1
push 0x10093df8
push edx
call fcn.10025613
add esp, 0xc
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret