Function at 0x10002f80
Capabilities:
Encrypt data using speck

Disassembly:
push ebp
xor edx, edx
mov ebp, esp
push edi
push esi
push ebx
lea eax, [ebp + 0x10]
and esp, 0xfffffff0
sub esp, 0x3e0
mov dword [esp + 0x8c], eax
mov ecx, dword [ebp + 8]
xor eax, eax
mov esi, dword [ebp + 0xc]
mov dword [esp + eax + 0xb8], edx
mov dword [esp + eax + 0xbc], edx
add eax, 8
cmp eax, 0x18
jb 0x10002fa3
xor ebx, ebx
xor edx, edx
mov dword [esp + eax + 0xb8], ebx
movzx eax, byte [esi]
mov edi, 0x10002c90
mov dword [esp + 0xbc], ecx
mov dword [esp + 0xd4], ecx
mov dword [esp + 0xd8], edi
mov dword [esp + 0x90], edx
test al, al
je 0x10003296
xor edx, edx
mov dword [esp + 0x94], edx
mov dl, al
sub dl, 0xc
cmp dl, 1
jbe 0x100030b0
cmp al, 0x20
je 0x100030b0
cmp al, 0xd
jbe 0x100032a8
cmp al, 0x25
jne 0x100032b2
movzx eax, byte [esi + 1]
lea ebx, [esi + 1]
mov dword [esp + 0x98], ebx
cmp al, 0x25
jne 0x10003368
mov eax, dword [esp + 0xc0]
xor ebx, ebx
mov dword [esp + 0xcc], ebx
mov edx, dword [esp + 0xbc]
sub edx, eax
mov dword [esp + 0xd0], edx
mov edx, dword [esp + 0xc4]
mov dword [esp + 0xc8], edx
cmp eax, edx
jae 0x10003097
lea edx, [eax + 1]
mov dword [esp + 0xc0], edx
movzx eax, byte [eax]
lea edx, [eax - 9]
cmp edx, 4
jbe 0x10003085
cmp eax, 0x20
jne 0x100032fc
mov eax, dword [esp + 0xc0]
mov edx, dword [esp + 0xc8]
cmp eax, edx
jb 0x10003067
lea eax, [esp + 0xb8]
call fcn.10002bd0
lea edx, [eax - 9]
cmp edx, 4
ja 0x1000307c
jmp 0x10003085
movzx eax, byte [esi + 1]
mov edx, esi
lea esi, [esi + 1]
mov cl, al
sub cl, 9
cmp cl, 4
jbe 0x100030b0
cmp al, 0x20
je 0x100030b0
mov dword [esp + 0x98], edx
mov edi, dword [esp + 0xbc]
xor eax, eax
mov dword [esp + 0xcc], eax
mov edx, dword [esp + 0xc0]
mov esi, dword [esp + 0xc4]
mov dword [esp + 0xa0], edi
mov ebx, edi
sub ebx, edx
mov dword [esp + 0xd0], ebx
cmp edx, esi
mov dword [esp + 0xc8], esi
jae 0x1000313a
lea eax, [edx + 1]
mov dword [esp + 0xc0], eax
movzx edx, byte [edx]
lea ecx, [edx - 0xa]
cmp ecx, 0x16
ja 0x10003250
mov edi, 0xffbffff2
sar edi, cl
mov ecx, edi
test cl, 1
jne 0x10003250
mov edx, eax
cmp edx, esi
jb 0x10003109
mov eax, dword [esp + 0xa0]
mov esi, edx
mov edi, dword [esp + 0xa0]
sub esi, eax
mov eax, dword [esp + 0xcc]
add esi, ebx
test eax, eax
je 0x10003161
cmp esi, eax
jge 0x10003346
mov eax, dword [esp + 0xb8]
add edi, eax
mov eax, 1
mov dword [esp + 8], eax
lea eax, [esp + 0x1e0]
mov dword [esp + 4], eax
lea eax, [esp + 0xb8]
mov dword [esp + 0xc4], edi
mov dword [esp + 0xc0], edi
mov dword [esp], eax
call dword [esp + 0xd8]
dec eax
jne 0x10003338
mov ebx, dword [esp + 0xcc]
lea eax, [esi + 1]
mov dword [esp + 0x9c], eax
movzx edx, byte [esp + 0x1e0]
mov esi, dword [esp + 0xc4]
mov eax, dword [esp + 0xc0]
test ebx, ebx
mov ecx, edx
je 0x100031e5
mov edi, dword [esp + 0x9c]
sub ebx, edi
mov edi, esi
sub edi, eax
cmp edi, ebx
jle 0x100031e5
lea esi, [eax + ebx]
mov dword [esp + 0xc8], esi
mov ebx, dword [esp + 0xbc]
mov edi, dword [esp + 0x9c]
mov dword [esp + 0xa0], ebx
sub ebx, eax
add ebx, edi
mov dword [esp + 0xd0], ebx
movzx edi, byte [eax - 1]
cmp edx, edi
je 0x10003116
mov byte [eax - 1], cl
lea ecx, [edx - 0xa]
mov edi, dword [esp + 0xbc]
cmp ecx, 0x16
mov esi, dword [esp + 0xc8]
mov eax, dword [esp + 0xc0]
mov ebx, dword [esp + 0xd0]
mov dword [esp + 0xa0], edi
jbe 0x10003122
lea esi, [esi]
and edx, 0xfffffffd
cmp edx, 9
je 0x10003134
test esi, esi
mov edi, dword [esp + 0xa0]
je 0x10004920
lea edx, [eax - 1]
mov dword [esp + 0xc0], edx
sub edx, edi
add edx, ebx
add dword [esp + 0x94], edx
mov eax, dword [esp + 0x98]
lea esi, [eax + 1]
movzx eax, byte [eax + 1]
test al, al
jne 0x10002ff9
mov eax, dword [esp + 0x90]
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
sub al, 9
cmp al, 2
jbe 0x100030b0
mov edx, dword [esp + 0xc0]
xor ecx, ecx
mov dword [esp + 0xcc], ecx
mov eax, dword [esp + 0xbc]
sub eax, edx
mov dword [esp + 0xd0], eax
mov eax, dword [esp + 0xc4]
mov dword [esp + 0xc8], eax
cmp edx, eax
jae 0x10003428
mov dword [esp + 0x98], esi
lea eax, [edx + 1]
mov dword [esp + 0xc0], eax
movzx eax, byte [edx]
mov ebx, dword [esp + 0x98]
movzx edx, byte [ebx]
cmp edx, eax
je 0x1000344d
test eax, eax
jns 0x10003296
mov edi, dword [esp + 0x90]
test edi, edi
jne 0x10003296
mov esi, 0xffffffff
mov dword [esp + 0x90], esi
jmp 0x10003296
mov edi, dword [esp + 0xbc]
mov edx, dword [esp + 0xc0]
mov eax, edi
sub eax, edx
add eax, esi
xor esi, esi
mov dword [esp + 0xd0], eax
mov ebx, eax
mov dword [esp + 0xc8], esi
jmp 0x10003275
cmp al, 0x2a
je 0x10003472
movzx edx, al
lea ecx, [edx - 0x30]
cmp ecx, 9
ja 0x10003714
cmp byte [esi + 2], 0x24
je 0x1000455a
mov eax, dword [esp + 0x8c]
mov ebx, dword [eax]
add eax, 4
mov dword [esp + 0x8c], eax
mov dword [esp + 0x88], ebx
mov ecx, dword [esp + 0x98]
xor esi, esi
lea esi, [esi]
lea eax, [esi + esi*4]
inc ecx
lea esi, [edx + eax*2 - 0x30]
movzx edx, byte [ecx]
lea ebx, [edx - 0x30]
mov eax, edx
cmp ebx, 9
jbe 0x100033b0
mov dword [esp + 0x98], ecx
cmp al, 0x6d
jne 0x100033e3
mov ebx, dword [esp + 0x98]
movzx eax, byte [ebx + 1]
inc ebx
mov dword [esp + 0x98], ebx
mov ebx, dword [esp + 0x98]
inc ebx
cmp al, 0x6a
ja 0x10003620
cmp al, 0x52
ja 0x100035d0
cmp al, 0x4c
jne 0x100034a0
mov eax, dword [esp + 0x98]
mov edi, 2
mov dword [esp + 0x98], ebx
mov dword [esp + 0x7c], edi
movzx eax, byte [eax + 1]
jmp 0x100036bd
lea eax, [esp + 0xb8]
call fcn.10002bd0
mov dword [esp + 0x98], esi
mov ebx, dword [esp + 0x98]
movzx edx, byte [ebx]
cmp edx, eax
jne 0x1000330e
mov eax, dword [esp + 0xc0]
mov edi, dword [esp + 0xbc]
mov edx, dword [esp + 0xd0]
sub eax, edi
add eax, edx
add dword [esp + 0x94], eax
jmp case.0x1000370d.2
movzx edx, byte [esi + 2]
lea eax, [esi + 2]
xor esi, esi
mov dword [esp + 0x98], eax
mov dword [esp + 0x88], esi
lea ecx, [edx - 0x30]
mov eax, edx
cmp ecx, 9
jbe 0x100033a3
xor esi, esi
jmp 0x100033cc
ja 0x10003312
cmp al, 0x43
je 0x10003735
nop
jbe 0x100035ae
mov dl, al
sub dl, 0x45
cmp dl, 2
ja 0x10003312
mov dword [esp + 0x80], eax
xor edx, edx
mov dword [esp + 0x7c], edx
mov eax, dword [esp + 0xc0]
xor ebx, ebx
mov dword [esp + 0xcc], ebx
mov edx, dword [esp + 0xbc]
mov ecx, dword [esp + 0xc4]
sub edx, eax
mov dword [esp + 0xd0], edx
mov dword [esp + 0xc8], ecx
nop
cmp eax, ecx
jae 0x10003680
lea edx, [eax + 1]
mov dword [esp + 0xc0], edx
movzx eax, byte [eax]
lea ebx, [eax - 9]
cmp ebx, 4
jbe 0x100036b0
cmp eax, 0x20
je 0x100036b0
test ecx, ecx
je 0x10003536
dec edx
mov dword [esp + 0xc0], edx
mov ebx, dword [esp + 0xbc]
mov eax, edx
mov ecx, dword [esp + 0xd0]
sub eax, ebx
mov edi, ebx
add eax, ecx
add dword [esp + 0x94], eax
mov eax, edi
mov dword [esp + 0xcc], esi
sub eax, edx
test esi, esi
mov dword [esp + 0xd0], eax
mov eax, dword [esp + 0xc4]
mov edi, eax
jne 0x10003779
mov dword [esp + 0xc8], edi
cmp edx, edi
jae 0x100037ef
inc edx
mov dword [esp + 0xc0], edx
dec dword [esp + 0xc0]
mov eax, dword [esp + 0x80]
sub eax, 0x41
cmp eax, 0x37
ja case.0x100035a7.66
jmp dword [eax*4 + 0x100ae02c]
cmp al, 0x41
je 0x100034c4
mov edi, dword [esp + 0x90]
test edi, edi
jne 0x10003296
jmp 0x10003321
mov cl, al
mov edx, 1
sub cl, 0x53
shl edx, cl
and edx, 0x5f4121
jne 0x100036b7
cmp al, 0x6a
je 0x100041e3
cmp al, 0x68
jne 0x10003312
mov eax, dword [esp + 0x98]
movzx eax, byte [eax + 1]
cmp al, 0x68
je 0x100045a8
mov dword [esp + 0x98], ebx
mov edx, 0xffffffff
mov dword [esp + 0x7c], edx
jmp 0x100036bd
mov cl, al
sub cl, 0x6c
cmp cl, 0xe
ja 0x10003312
mov edx, 1
shl edx, cl
test edx, 0x129c
jne 0x100053b3
test dh, 0x41
jne 0x1000378d
test dl, 1
je 0x10003312
mov eax, dword [esp + 0x98]
cmp byte [eax + 1], 0x6c
jne 0x1000378d
mov ebx, eax
mov edx, 3
movzx eax, byte [eax + 2]
mov dword [esp + 0x7c], edx
add ebx, 2
mov dword [esp + 0x98], ebx
jmp 0x100036bd
lea eax, [esp + 0xb8]
call fcn.10002bd0
mov ecx, dword [esp + 0xc8]
mov edx, dword [esp + 0xc0]
lea ebx, [eax - 9]
cmp ebx, 4
ja 0x10003521
lea esi, [esi]
lea esi, [esi]
mov eax, edx
jmp 0x10003500
xor ecx, ecx
mov dword [esp + 0x7c], ecx
mov dl, al
and dl, 0x2f
cmp dl, 3
je 0x100037ad
movzx ebx, al
cmp al, 0x63
mov dword [esp + 0x80], ebx
je 0x1000373e
cmp dword [esp + 0x80], 0x6e
jne 0x100037ce
mov esi, dword [esp + 0x88]
mov eax, dword [esp + 0x94]
test esi, esi
je case.0x1000370d.2
mov ecx, dword [esp + 0x7c]
add ecx, 2
cmp ecx, 5
ja case.0x1000370d.2
jmp dword [ecx*4 + 0x100ae10c]
mov ebx, dword [esp + 0x8c]
xor esi, esi
mov edi, dword [ebx]
add ebx, 4
mov dword [esp + 0x8c], ebx
mov dword [esp + 0x88], edi
jmp 0x100033cc
mov eax, 1
mov dword [esp + 0x7c], eax
test esi, esi
mov eax, 1
mov edx, dword [esp + 0xc0]
cmovle esi, eax
mov eax, dword [esp + 0xbc]
mov edi, 0x63
mov dword [esp + 0xcc], esi
mov dword [esp + 0x80], edi
sub eax, edx
mov dword [esp + 0xd0], eax
mov eax, dword [esp + 0xc4]
mov edi, eax
sub eax, edx
cmp eax, esi
jle 0x10003576
lea edi, [edx + esi]
jmp 0x10003576
mov eax, dword [esp + 0x98]
mov dword [esp + 0x98], ebx
mov ebx, 1
mov dword [esp + 0x7c], ebx
movzx eax, byte [eax + 1]
jmp 0x100036bd
or al, 0x20
cmp al, 0x63
je 0x10003735
cmp al, 0x6e
je 0x100039fb
movzx eax, al
mov dword [esp + 0x80], eax
mov eax, 1
mov dword [esp + 0x7c], eax
cmp dword [esp + 0x80], 0x5b
jne 0x100034d1
mov edi, dword [esp + 0xbc]
mov edx, dword [esp + 0xc0]
jmp 0x10003553
lea eax, [esp + 0xb8]
call fcn.10002bd0
test eax, eax
js 0x10003312
mov edi, dword [esp + 0xc8]
test edi, edi
je 0x10003594
jmp 0x1000358d
mov eax, dword [esp + 0xc0]
mov edx, dword [esp + 0xbc]
mov ecx, dword [esp + 0xd0]
sub eax, edx
add eax, ecx
mov esi, eax
mov eax, dword [esp + 0x88]
add dword [esp + 0x94], esi
test eax, eax
je case.0x1000370d.2
inc dword [esp + 0x90]
jmp case.0x1000370d.2
mov eax, dword [esp + 0x7c]
mov edx, dword [esp + 0xc0]
test eax, eax
mov ecx, edx
je 0x10004950
dec eax
cmp eax, 1
ja 0x100049be
mov eax, 0xfffffb64
mov ebx, 0x400
mov dword [esp + 0x4c], eax
mov eax, 0x219
mov esi, 0x3fc
mov dword [esp + 0x2c], eax
xor eax, eax
mov edx, 0x35
mov dword [esp + 0x28], eax
mov eax, 0xfffffbce
mov dword [esp + 0x50], eax
mov eax, 0xffffffff
mov dword [esp + 0x54], eax
mov eax, 0xfffffbce
mov dword [esp + 0x38], ebx
mov ebx, 0x432
mov dword [esp + 0x40], esi
xor esi, esi
mov dword [esp + 0x78], eax
mov eax, 0x35
mov dword [esp + 0x30], edx
mov dword [esp + 0x48], ebx
mov dword [esp + 0x34], esi
mov dword [esp + 0xa0], eax
cmp ecx, edi
jae 0x1000391a
lea eax, [ecx + 1]
mov dword [esp + 0xc0], eax
movzx edx, byte [ecx]
lea ecx, [edx - 0xa]
cmp ecx, 0x16
ja 0x10004203
mov eax, 0xffbffff2
sar eax, cl
test al, 1
jne 0x10004203
mov edi, dword [esp + 0xc8]
mov ecx, dword [esp + 0xc0]
cmp ecx, edi
jb 0x100038e0
mov eax, dword [esp + 0xbc]
mov edi, dword [esp + 0xd0]
mov edx, dword [esp + 0xcc]
sub ecx, eax
add edi, ecx
cmp edi, edx
jl 0x1000393f
test edx, edx
jne 0x1000620a
mov edx, dword [esp + 0xb8]
mov ecx, 1
mov dword [esp + 8], ecx
add eax, edx
mov dword [esp + 0xc4], eax
mov dword [esp + 0xc0], eax
lea eax, [esp + 0x1e0]
mov dword [esp + 4], eax
lea eax, [esp + 0xb8]
mov dword [esp], eax
call dword [esp + 0xd8]
dec eax
jne 0x1000515f
mov eax, dword [esp + 0xcc]
inc edi
mov ecx, dword [esp + 0xc4]
movzx edx, byte [esp + 0x1e0]
test eax, eax
mov dword [esp + 0x9c], ecx
mov ecx, dword [esp + 0xc0]
mov ebx, edx
je 0x100039c7
mov esi, eax
mov eax, dword [esp + 0x9c]
sub esi, edi
sub eax, ecx
cmp eax, esi
jle 0x100039c7
add esi, ecx
mov dword [esp + 0x9c], esi
mov eax, dword [esp + 0x9c]
mov dword [esp + 0xc8], eax
mov eax, dword [esp + 0xbc]
sub eax, ecx
add eax, edi
mov dword [esp + 0xd0], eax
movzx eax, byte [ecx - 1]
cmp edx, eax
je 0x100038ed
mov byte [ecx - 1], bl
jmp 0x100038ed
mov eax, dword [esp + 0x88]
test eax, eax
je case.0x1000370d.2
mov eax, dword [esp + 0x88]
mov ebx, dword [esp + 0x94]
mov dword [eax], ebx
jmp case.0x1000370d.2
mov eax, dword [esp + 0x80]
and eax, 0xffffffef
cmp eax, 0x63
jne 0x10004813
lea edx, [esp + 0xe0]
mov al, 0xff
mov byte [esp + 0xdf], al
test dl, 2
mov ecx, 0x100
jne 0x100051ab
mov ebx, ecx
xor eax, eax
and ebx, 0xfffffff8
mov dword [edx + eax], 0xffffffff
mov dword [edx + eax + 4], 0xffffffff
add eax, 8
cmp eax, ebx
jb 0x10003a57
add edx, eax
test cl, 4
je 0x10003a7d
mov dword [edx], 0xffffffff
add edx, 4
test cl, 2
je 0x10003a8a
mov word [edx], 0xffff
add edx, 2
test cl, 1
je 0x10003a92
mov byte [edx], 0xff
xor edx, edx
cmp dword [esp + 0x80], 0x73
mov byte [esp + 0xdf], dl
jne 0x10003ac0
xor eax, eax
mov dword [esp + 0xe9], eax
xor eax, eax
mov byte [esp + 0xed], al
xor eax, eax
mov byte [esp + 0x100], al
mov edx, dword [esp + 0x88]
xor ebx, ebx
mov ecx, dword [esp + 0xc0]
test edx, edx
mov eax, ecx
je 0x10003f4b
mov eax, edi
mov edi, esi
mov esi, dword [esp + 0x88]
jmp 0x10003b11
lea eax, [ecx + 1]
mov dword [esp + 0xc0], eax
movzx eax, byte [ecx]
cmp byte [esp + eax + 0xe0], 0
je 0x10003b2b
inc ebx
mov byte [esi + ebx - 1], al
mov eax, dword [esp + 0xc8]
mov ecx, dword [esp + 0xc0]
cmp ecx, eax
jb 0x10003ae7
lea eax, [esp + 0xb8]
call fcn.10002bd0
cmp byte [esp + eax + 0xe0], 0
jne 0x10003afe
mov esi, edi
mov ecx, dword [esp + 0xc0]
mov edi, dword [esp + 0xc8]
test edi, edi
je 0x10003b47
dec ecx
mov dword [esp + 0xc0], ecx
mov edi, dword [esp + 0xbc]
mov eax, ecx
sub eax, edi
add eax, dword [esp + 0xd0]
je 0x10003296
cmp dword [esp + 0x80], 0x63
je 0x1000493e
mov edi, dword [esp + 0x88]
test edi, edi
je 0x10004c55
mov byte [edi + ebx], 0
mov eax, dword [esp + 0xc0]
mov edx, dword [esp + 0xbc]
mov ecx, dword [esp + 0xd0]
sub eax, edx
add eax, ecx
add dword [esp + 0x94], eax
jmp 0x10003848
xor edx, edx
mov ecx, 0x10
mov dword [esp + 0x70], edx
mov eax, 0x10
mov ebx, 3
mov dword [esp + 0x9c], ecx
xor esi, esi
mov dword [esp + 0xa0], eax
mov eax, dword [esp + 0xc0]
cmp eax, edi
jae 0x10003f70
lea edx, [eax + 1]
mov dword [esp + 0xc0], edx
movzx ecx, byte [eax]
lea eax, [ecx - 9]
cmp eax, 4
jbe 0x10003fa0
cmp ecx, 0x20
je 0x10003fa0
mov dword [esp + 0x60], 0
lea eax, [ecx - 0x2b]
and eax, 0xfffffffd
jne 0x10003c30
xor eax, eax
cmp ecx, 0x2d
sete al
neg eax
cmp edx, edi
mov dword [esp + 0x60], eax
jae 0x10004587
lea eax, [edx + 1]
mov dword [esp + 0xc0], eax
movzx ecx, byte [edx]
mov edx, eax
test esi, esi
jne 0x1000400e
cmp ecx, 0x30
je 0x10004781
mov esi, dword [esp + 0xa0]
movzx eax, byte [ecx + 0x100ae161]
test esi, esi
jne 0x100045cb
cmp al, 9
ja 0x100044ef
lea eax, [ecx - 0x30]
xor esi, esi
mov dword [esp + 0xa0], esi
xor ebx, ebx
cmp eax, 9
ja 0x10005146
lea eax, [ebx + ebx*4]
cmp edx, edi
lea ebx, [ecx + eax*2 - 0x30]
jae 0x10003cd2
lea esi, [edx + 1]
mov dword [esp + 0xc0], esi
movzx ecx, byte [edx]
lea eax, [ecx - 0x30]
cmp eax, 9
ja 0x10003cfe
cmp ebx, 0x19999998
ja 0x10003cfe
mov edx, esi
jmp 0x10003c76
mov eax, 0xa
mov esi, 8
mov dword [esp + 0x9c], eax
mov eax, 0xa
mov ebx, 7
mov dword [esp + 0x70], esi
mov esi, 0xa
mov dword [esp + 0xa0], eax
jmp 0x10003bca
lea eax, [esp + 0xb8]
call fcn.10002bd0
cmp ebx, 0x19999998
mov edi, dword [esp + 0xc8]
mov esi, dword [esp + 0xc0]
mov ecx, eax
lea eax, [eax - 0x30]
ja 0x10003cfe
cmp eax, 9
jbe 0x10003c9e
mov dword [esp + 0x9c], eax
mov dword [esp + 0xa0], ebx
xor ebx, ebx
cmp dword [esp + 0x9c], 9
mov ecx, dword [esp + 0xa0]
ja 0x10005291
mov dword [esp + 0x68], edi
mov ecx, dword [esp + 0x9c]
mov eax, 0xa
mul dword [esp + 0xa0]
mov dword [esp + 0x9c], esi
mov ebx, ecx
sar ebx, 0x1f
add ecx, eax
mov edi, dword [esp + 0x9c]
mov dword [esp + 0xa0], ecx
mov eax, dword [esp + 0x68]
adc ebx, edx
mov dword [esp + 0xa4], ebx
cmp edi, eax
jae 0x10003fe0
lea eax, [edi + 1]
mov dword [esp + 0xc0], eax
mov dword [esp + 0x9c], eax
movzx ebx, byte [edi]
mov dword [esp + 0x70], ebx
mov eax, dword [esp + 0x70]
lea ecx, [eax - 0x30]
cmp ecx, 9
ja 0x10004bb6
mov eax, dword [esp + 0xa0]
mov ebx, 0x99999999
mov edx, dword [esp + 0xa4]
cmp ebx, eax
mov ebx, 0x19999999
sbb ebx, edx
mov esi, eax
jae 0x10003fa7
cmp ecx, 9
mov edi, dword [esp + 0x68]
mov esi, dword [esp + 0x9c]
ja 0x1000440a
mov eax, dword [esp + 0x70]
mov edx, 0xa
mov dword [esp + 0x9c], edx
movzx eax, byte [eax + 0x100ae161]
mov ebx, dword [esp + 0x9c]
cmp eax, ebx
jb 0x10003e1e
jmp 0x1000440a
lea eax, [esi + 1]
mov dword [esp + 0xc0], eax
movzx eax, byte [esi]
movzx eax, byte [eax + 0x100ae161]
cmp eax, ebx
jae 0x10003e39
mov esi, dword [esp + 0xc0]
mov edi, dword [esp + 0xc8]
cmp esi, edi
jb 0x10003df8
lea eax, [esp + 0xb8]
call fcn.10002bd0
movzx eax, byte [eax + 0x100ae161]
cmp eax, ebx
jb 0x10003e10
call dword [sym.imp.msvcrt.dll__errno]
mov edi, dword [esp + 0xc8]
mov esi, dword [esp + 0xc0]
mov dword [eax], 0x22
mov eax, 0xffffffff
mov dword [esp + 0xa0], eax
mov eax, 0xffffffff
mov dword [esp + 0xa4], eax
test edi, edi
je 0x10003e77
dec esi
mov dword [esp + 0xc0], esi
mov ebx, dword [esp + 0xd0]
mov ecx, dword [esp + 0xbc]
mov eax, esi
sub eax, ecx
add eax, ebx
mov edx, eax
je 0x10003296
cmp dword [esp + 0x80], 0x70
jne 0x10004438
mov eax, dword [esp + 0x88]
test eax, eax
je 0x10004927
mov edi, dword [esp + 0xa0]
mov dword [eax], edi
mov eax, dword [esp + 0xc0]
mov edi, dword [esp + 0xbc]
sub eax, edi
add eax, ebx
add dword [esp + 0x94], eax
jmp 0x10003848
xor eax, eax
mov ebx, 5
mov dword [esp + 0x70], eax
mov eax, 8
mov esi, 8
mov dword [esp + 0x9c], eax
mov eax, 8
mov dword [esp + 0xa0], eax
jmp 0x10003bca
xor eax, eax
xor edx, edx
mov dword [esp + 0x70], eax
xor ecx, ecx
xor ebx, ebx
mov dword [esp + 0x9c], edx
xor esi, esi
mov dword [esp + 0xa0], ecx
jmp 0x10003bca
lea eax, [esp + 0xb8]
call fcn.10002bd0
mov edi, dword [esp + 0xc8]
mov ecx, dword [esp + 0xc0]
cmp byte [esp + eax + 0xe0], 0
je 0x10003f66
mov eax, ecx
cmp eax, edi
jae 0x10003f25
lea ecx, [eax + 1]
mov dword [esp + 0xc0], ecx
movzx eax, byte [eax]
cmp byte [esp + eax + 0xe0], 0
jne 0x10003f49
xor ebx, ebx
jmp 0x10003b3b
lea eax, [esp + 0xb8]
call fcn.10002bd0
mov edx, dword [esp + 0xc0]
mov edi, dword [esp + 0xc8]
mov ecx, eax
lea eax, [eax - 9]
cmp eax, 4
ja 0x10003bf2
lea esi, [esi]
nop
mov eax, edx
jmp 0x10003bd1
imul ebx, edx, 0xa
mov eax, 0xa
mul esi
mov esi, ecx
add edx, ebx
mov ebx, ecx
sar ebx, 0x1f
add esi, eax
mov edi, ebx
adc edi, edx
jae 0x10003d46
mov edi, dword [esp + 0x68]
mov esi, dword [esp + 0x9c]
jmp 0x10003dcb
lea eax, [esp + 0xb8]
call fcn.10002bd0
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0xc0]
mov dword [esp + 0x9c], eax
mov eax, dword [esp + 0xc8]
mov dword [esp + 0x68], eax
jmp 0x10003d83
movzx eax, byte [ecx + 0x100ae161]
mov esi, dword [esp + 0x9c]
cmp eax, esi
jae 0x100044ef
cmp dword [esp + 0x9c], 0xa
je 0x10003c5f
mov esi, dword [esp + 0x70]
xor ecx, ecx
mov dword [esp + 0xa0], ecx
test esi, esi
je 0x1000524b
mov ecx, edi
xor ebx, ebx
mov edi, dword [esp + 0x9c]
jmp 0x10004078
lea esi, [edx + 1]
mov dword [esp + 0xc0], esi
movzx eax, byte [edx]
movzx eax, byte [eax + 0x100ae161]
cmp eax, edi
mov edx, eax
jae 0x100040a8
cmp ebx, 0x71c71c6
ja 0x100040a8
mov edx, esi
imul ebx, edi
add ebx, eax
cmp edx, ecx
jb 0x10004054
lea eax, [esp + 0xb8]
call fcn.10002bd0
mov ecx, dword [esp + 0xc8]
mov esi, dword [esp + 0xc0]
movzx eax, byte [eax + 0x100ae161]
cmp eax, edi
mov edx, eax
jb 0x1000406e
mov dword [esp + 0xa0], ebx
xor eax, eax
mov edi, ecx
mov dword [esp + 0xa4], eax
mov eax, dword [esp + 0x9c]
mov dword [esp + 0xa0], ebx
cmp edx, eax
jae 0x1000440a
mov dword [esp + 0x70], ecx
mov edi, esi
mov esi, edx
mov ecx, dword [esp + 0xa0]
mov eax, esi
xor edx, edx
mov ebx, dword [esp + 0xa4]
shld ebx, ecx, 3
shl ecx, 3
add eax, ecx
adc edx, ebx
jb 0x100052d8
mov dword [esp + 0xa0], eax
mov eax, dword [esp + 0x70]
mov dword [esp + 0xa4], edx
cmp edi, eax
jae 0x10004188
lea edx, [edi + 1]
mov dword [esp + 0xc0], edx
movzx eax, byte [edi]
mov edi, edx
movzx esi, byte [eax + 0x100ae161]
mov eax, dword [esp + 0x9c]
cmp esi, eax
jae 0x10004933
mov ecx, dword [esp + 0xa4]
test ecx, ecx
je 0x100040d8
mov ebx, eax
mov eax, dword [esp + 0xa0]
mul ebx
mov dword [esp + 0x68], eax
mov eax, ecx
mov dword [esp + 0x6c], edx
mul ebx
mov ebx, edx
mov edx, dword [esp + 0x6c]
mov ecx, eax
mov eax, edx
xor edx, edx
add ecx, eax
adc ebx, edx
test ebx, ebx
je 0x100040d8
mov esi, edi
mov ebx, dword [esp + 0x9c]
mov edi, dword [esp + 0x70]
jmp 0x10003e1e
lea eax, [esp + 0xb8]
call fcn.10002bd0
mov ebx, dword [esp + 0xc8]
mov edi, dword [esp + 0xc0]
mov dword [esp + 0x70], ebx
jmp 0x10004120
mov eax, dword [esp + 0x88]
mov ebx, dword [esp + 0x94]
mov dword [eax], ebx
sar ebx, 0x1f
mov dword [eax + 4], ebx
jmp case.0x1000370d.2
mov ebx, dword [esp + 0x88]
mov word [ebx], ax
jmp case.0x1000370d.2
mov ebx, dword [esp + 0x88]
mov byte [ebx], al
jmp case.0x1000370d.2
mov eax, dword [esp + 0x98]
mov dword [esp + 0x98], ebx
mov ebx, 3
mov dword [esp + 0x7c], ebx
movzx eax, byte [eax + 1]
jmp 0x100036bd
mov eax, edx
and eax, 0xfffffffd
cmp eax, 9
je 0x10003908
lea eax, [edx - 0x2b]
and eax, 0xfffffffd
jne 0x10004ba8
xor eax, eax
cmp edx, 0x2d
sete al
mov edx, 1
add eax, eax
sub edx, eax
mov eax, dword [esp + 0xc0]
cmp eax, dword [esp + 0xc8]
mov dword [esp + 0x70], edx
jae 0x10005214
lea edx, [eax + 1]
mov dword [esp + 0xc0], edx
movzx edx, byte [eax]
mov eax, edx
or eax, 0x20
cmp eax, 0x69
jne 0x10004ab9
mov eax, dword [esp + 0xc0]
mov ecx, dword [esp + 0xc8]
cmp eax, ecx
jae 0x10004aa1
lea edx, [eax + 1]
mov dword [esp + 0xc0], edx
movzx eax, byte [eax]
or eax, 0x20
cmp eax, 0x6e
jne 0x10004a10
mov eax, dword [esp + 0xc0]
cmp eax, ecx
jae 0x10004a67
lea edx, [eax + 1]
mov dword [esp + 0xc0], edx
movzx eax, byte [eax]
or eax, 0x20
cmp eax, 0x66
jne 0x10004a10
mov eax, dword [esp + 0xc0]
cmp eax, ecx
jae 0x100049d5
lea edx, [eax + 1]
mov dword [esp + 0xc0], edx
movzx eax, byte [eax]
or al, 0x20
cmp al, 0x69
jne 0x10004a03
cmp edx, ecx
jae 0x100051fc
lea eax, [edx + 1]
mov dword [esp + 0xc0], eax
movzx eax, byte [edx]
or eax, 0x20
cmp eax, 0x6e
jne 0x10004a10
mov eax, dword [esp + 0xc0]
cmp eax, ecx
jae 0x100051e4
lea edx, [eax + 1]
mov dword [esp + 0xc0], edx
movzx eax, byte [eax]
or eax, 0x20
cmp eax, 0x69
jne 0x10004a10
mov eax, dword [esp + 0xc0]
cmp eax, ecx
jae 0x100051cc
lea edx, [eax + 1]
mov dword [esp + 0xc0], edx
movzx eax, byte [eax]
or eax, 0x20
cmp eax, 0x74
jne 0x10004a10
mov eax, dword [esp + 0xc0]
cmp eax, ecx
jae 0x100051bb
lea edx, [eax + 1]
mov dword [esp + 0xc0], edx
movzx eax, byte [eax]
or eax, 0x20
cmp eax, 0x79
jne 0x10004a10
mov edx, dword [esp + 0xc0]
pxor xmm0, xmm0
cvtsi2ss xmm0, dword [esp + 0x70]
mov ebx, dword [esp + 0xd0]
mulss xmm0, dword [0x100ae278]
mov ecx, dword [esp + 0xbc]
cvtss2sd xmm0, xmm0
mov eax, edx
sub eax, ecx
add eax, ebx
je 0x10003296
mov ebx, dword [esp + 0x88]
add dword [esp + 0x94], eax
test ebx, ebx
je case.0x1000370d.2
mov eax, dword [esp + 0x7c]
cmp eax, 1
je 0x10004803
cmp eax, 2
je 0x10004803
test eax, eax
jne 0x10003848
mov eax, dword [esp + 0x88]
cvtsd2ss xmm0, xmm0
movss dword [eax], xmm0
jmp 0x10003848
mov dword [esp + 0xa4], edi
mov edi, dword [esp + 0x68]
mov dword [esp + 0xa0], esi
mov esi, ebx
mov eax, dword [esp + 0x60]
mov ecx, dword [esp + 0xa0]
mov ebx, dword [esp + 0xa4]
cdq
xor ecx, eax
xor ebx, edx
sub ecx, eax
mov dword [esp + 0xa0], ecx
sbb ebx, edx
mov dword [esp + 0xa4], ebx
jmp 0x10003e6b
mov esi, dword [esp + 0x88]
test esi, esi
je 0x10004927
mov eax, dword [esp + 0x7c]
add eax, 2
cmp eax, 5
ja case.0x10004453.2
jmp dword [eax*4 + 0x100ae124]
mov eax, dword [esp + 0x88]
mov ebx, dword [esp + 0xa0]
mov dword [eax], ebx
add dword [esp + 0x94], edx
jmp 0x10003848
mov eax, dword [esp + 0x88]
mov ebx, dword [esp + 0xa0]
mov esi, dword [esp + 0xa4]
add dword [esp + 0x94], edx
mov dword [eax], ebx
mov dword [eax + 4], esi
jmp 0x10003848
mov eax, dword [esp + 0x88]
mov ebx, dword [esp + 0xa0]
mov word [eax], bx
add dword [esp + 0x94], edx
jmp 0x10003848
mov ebx, dword [esp + 0x88]
movzx eax, byte [esp + 0xa0]
mov byte [ebx], al
mov eax, dword [esp + 0xc0]
mov ecx, dword [esp + 0xbc]
mov ebx, dword [esp + 0xd0]
sub eax, ecx
add eax, ebx
add dword [esp + 0x94], eax
jmp 0x10003848
test edi, edi
je 0x100044fb
dec edx
mov dword [esp + 0xc0], edx
mov eax, dword [esp + 0xbc]
xor edi, edi
mov dword [esp + 0xcc], edi
sub eax, edx
mov dword [esp + 0xd0], eax
mov eax, dword [esp + 0xc4]
mov dword [esp + 0xc8], eax
call dword [sym.imp.msvcrt.dll__errno]
mov esi, dword [esp + 0xc0]
mov ecx, dword [esp + 0xbc]
mov dword [eax], 0x16
xor eax, eax
mov dword [esp + 0xa0], eax
xor eax, eax
mov ebx, dword [esp + 0xd0]
mov dword [esp + 0xa4], eax
jmp 0x10003e85
mov eax, dword [esp + 0x8c]
mov edx, ecx
call fcn.10002d70
movzx edx, byte [esi + 3]
lea ecx, [edx - 0x30]
mov dword [esp + 0x88], eax
lea eax, [esi + 3]
mov dword [esp + 0x98], eax
mov eax, edx
jmp 0x1000348e
lea eax, [esp + 0xb8]
call fcn.10002bd0
mov edi, dword [esp + 0xc8]
mov edx, dword [esp + 0xc0]
mov ecx, eax
jmp 0x10003c30
mov ebx, dword [esp + 0x98]
mov ecx, 0xfffffffe
mov dword [esp + 0x7c], ecx
movzx eax, byte [ebx + 2]
add ebx, 2
mov dword [esp + 0x98], ebx
jmp 0x100036bd
cmp al, 0xf
ja 0x100044ef
mov ecx, 4
mov ebx, 0x10
mov dword [esp + 0x68], ecx
mov dword [esp + 0x9c], ebx
mov ecx, dword [esp + 0x68]
xor ebx, ebx
shl ebx, cl
or ebx, eax
cmp edx, edi
jae 0x10004625
lea esi, [edx + 1]
cmp ebx, 0x7ffffff
mov dword [esp + 0xc0], esi
movzx eax, byte [edx]
movzx eax, byte [eax + 0x100ae161]
mov dword [esp + 0x58], eax
ja 0x1000466b
mov edx, dword [esp + 0x9c]
cmp eax, edx
jae 0x1000466b
mov edx, esi
jmp 0x100045ee
mov dword [esp + 0xa0], ecx
lea eax, [esp + 0xb8]
call fcn.10002bd0
mov ecx, dword [esp + 0x9c]
mov edi, dword [esp + 0xc8]
mov esi, dword [esp + 0xc0]
movzx eax, byte [eax + 0x100ae161]
mov dword [esp + 0x58], eax
cmp eax, ecx
jae 0x1000466b
cmp ebx, 0x7ffffff
mov ecx, dword [esp + 0xa0]
jbe 0x10004621
mov dword [esp + 0xa0], ebx
mov ecx, dword [esp + 0x9c]
xor eax, eax
cmp dword [esp + 0x58], ecx
mov dword [esp + 0xa4], eax
jae 0x1000440a
movzx ecx, byte [esp + 0x68]
mov edx, 0xffffffff
mov eax, 0xffffffff
shrd eax, edx, cl
shr edx, cl
test cl, 0x20
je 0x100046a9
mov eax, edx
xor edx, edx
mov dword [esp + 0x74], edx
cmp eax, ebx
mov ebx, edx
mov dword [esp + 0x70], eax
mov edx, dword [esp + 0xa4]
mov eax, dword [esp + 0xa0]
sbb ebx, edx
jb 0x100061b8
mov ecx, dword [esp + 0x68]
mov ebx, esi
mov esi, eax
mov dword [esp + 0x68], edi
mov edi, edx
mov edx, dword [esp + 0x58]
jmp 0x10004714
lea edx, [ebx + 1]
mov dword [esp + 0xc0], edx
movzx eax, byte [ebx]
mov ebx, edx
movzx edx, byte [eax + 0x100ae161]
mov eax, dword [esp + 0x9c]
cmp edx, eax
jae 0x100043f6
mov eax, dword [esp + 0x74]
cmp dword [esp + 0x70], esi
sbb eax, edi
jb 0x100047f1
shld edi, esi, cl
xor eax, eax
shl esi, cl
test cl, 0x20
cmovne edi, esi
cmovne esi, eax
mov dword [esp + 0xa0], esi
mov esi, edx
mov dword [esp + 0xa4], edi
mov eax, dword [esp + 0xa0]
xor edi, edi
or esi, eax
mov eax, dword [esp + 0xa4]
or edi, eax
mov eax, dword [esp + 0x68]
cmp ebx, eax
jb 0x100046df
mov dword [esp + 0xa0], ecx
lea eax, [esp + 0xb8]
call fcn.10002bd0
mov ecx, dword [esp + 0xc8]
mov ebx, dword [esp + 0xc0]
mov dword [esp + 0x68], ecx
mov ecx, dword [esp + 0xa0]
jmp 0x100046ee
cmp edx, edi
jae 0x10004c34
lea esi, [edx + 1]
mov dword [esp + 0xc0], esi
movzx edx, byte [edx]
mov eax, edx
or eax, 0x20
cmp eax, 0x78
je 0x10004bc6
mov ebx, dword [esp + 0xa0]
cmp ebx, 1
sbb eax, eax
add eax, 4
cmp ebx, 1
mov dword [esp + 0x68], eax
movzx eax, byte [edx + 0x100ae161]
sbb ebx, ebx
and ebx, 0xfffffff8
mov edx, esi
add ebx, 0x10
mov dword [esp + 0x9c], ebx
cmp eax, ebx
jb 0x100045e8
xor ecx, ecx
xor ebx, ebx
mov dword [esp + 0xa0], ecx
mov dword [esp + 0xa4], ebx
jmp 0x1000440a
mov esi, ebx
mov edi, dword [esp + 0x68]
mov ebx, dword [esp + 0x9c]
jmp 0x10003e1e
mov eax, dword [esp + 0x88]
movsd qword [eax], xmm0
jmp 0x10003848
mov eax, dword [esp + 0x98]
cmp byte [eax + 1], 0x5e
je 0x10004a7f
inc eax
mov dword [esp + 0x98], eax
mov al, 1
mov byte [esp + 0x9c], al
xor eax, eax
mov dword [esp + 0xa0], eax
imul eax, dword [esp + 0xa0], 0x1010101
mov ecx, 0x101
lea edx, [esp + 0xdf]
mov dword [esp + 0x7c], eax
mov eax, edx
test al, 1
jne 0x10006213
test dl, 2
jne 0x10006224
mov dword [esp + 0x70], ecx
mov ebx, ecx
xor eax, eax
and ebx, 0xfffffff8
mov ecx, dword [esp + 0x7c]
mov dword [edx + eax], ecx
mov dword [edx + eax + 4], ecx
add eax, 8
cmp eax, ebx
jb 0x10004877
mov ecx, dword [esp + 0x70]
add edx, eax
and ecx, 7
je 0x100048a6
xor eax, eax
movzx ebx, byte [esp + 0xa0]
mov byte [edx + eax], bl
inc eax
cmp eax, ecx
jb 0x10004896
mov byte [esp + 0xdf], 0
mov eax, dword [esp + 0x98]
movzx eax, byte [eax]
cmp al, 0x2d
je 0x100062a3
cmp al, 0x5d
je 0x10006355
mov dword [esp + 0x70], esi
mov edx, dword [esp + 0x98]
mov dword [esp + 0x68], edi
jmp 0x100048f7
movzx esi, al
mov al, bl
movzx ebx, byte [esp + 0x9c]
cmp al, 0x5d
mov edx, ecx
mov byte [esp + esi + 0xe0], bl
je 0x100062d1
test al, al
je 0x10003312
movzx ebx, byte [edx + 1]
lea ecx, [edx + 1]
cmp al, 0x2d
jne 0x100048d9
cmp bl, 0x5d
je 0x10004917
test bl, bl
jne 0x10006237
mov al, bl
mov esi, 0x2d
jmp 0x100048de
mov edx, eax
jmp 0x10003275
add dword [esp + 0x94], edx
jmp case.0x1000370d.2
mov esi, edi
mov edi, dword [esp + 0x70]
jmp 0x1000440a
cmp eax, esi
je 0x10003832
jmp 0x10003296
mov eax, pe_nt_image_headers32
mov edx, 0x4a
mov dword [esp + 0x38], eax
mov eax, 0x7c
xor ebx, ebx
mov dword [esp + 0x40], eax
mov eax, 0xffffff01
mov esi, 0xffffff6b
mov dword [esp + 0x4c], eax
mov eax, 0xffffffff
mov dword [esp + 0x54], eax
mov eax, 0x18
mov dword [esp + 0x30], eax
mov eax, 0x95
mov dword [esp + 0x48], eax
xor eax, eax
mov dword [esp + 0x2c], edx
mov edx, 0x18
mov dword [esp + 0x34], eax
mov eax, 0xffffff6b
mov dword [esp + 0x28], ebx
mov dword [esp + 0x50], esi
mov dword [esp + 0x78], eax
mov dword [esp + 0xa0], edx
jmp 0x100038dc
mov ebx, dword [esp + 0xd0]
pxor xmm0, xmm0
mov ecx, dword [esp + 0xbc]
jmp 0x100043a2
lea eax, [esp + 0xb8]
call fcn.10002bd0
mov ecx, dword [esp + 0xc8]
mov edx, dword [esp + 0xc0]
or eax, 0x20
cmp eax, 0x69
je 0x100042de
test ecx, ecx
je 0x1000437e
dec edx
mov dword [esp + 0xc0], edx
jmp 0x1000437e
mov edi, dword [esp + 0xc8]
test edi, edi
je 0x10004a22
dec dword [esp + 0xc0]
call dword [sym.imp.msvcrt.dll__errno]
mov dword [eax], 0x16
mov ecx, dword [esp + 0xbc]
xor ebx, ebx
pxor xmm0, xmm0
mov dword [esp + 0xcc], ebx
mov edx, dword [esp + 0xc0]
mov eax, dword [esp + 0xc4]
mov ebx, ecx
sub ebx, edx
mov dword [esp + 0xd0], ebx
mov dword [esp + 0xc8], eax
jmp 0x100043a2
lea eax, [esp + 0xb8]
call fcn.10002bd0
mov ecx, dword [esp + 0xc8]
jmp 0x100042ac
xor ecx, ecx
mov ebx, 1
add dword [esp + 0x98], 2
mov byte [esp + 0x9c], cl
mov dword [esp + 0xa0], ebx
jmp 0x1000483e
lea eax, [esp + 0xb8]
call fcn.10002bd0
mov ecx, dword [esp + 0xc8]
jmp 0x10004284
cmp eax, 0x6e
jne 0x10004c91
mov eax, dword [esp + 0xc0]
mov esi, dword [esp + 0xc8]
cmp eax, esi
jae 0x10004c79
lea edx, [eax + 1]
mov dword [esp + 0xc0], edx
movzx eax, byte [eax]
or eax, 0x20
cmp eax, 0x61
jne 0x10004a10
mov eax, dword [esp + 0xc0]
cmp eax, esi
jae 0x10004c61
lea edx, [eax + 1]
mov dword [esp + 0xc0], edx
movzx eax, byte [eax]
or eax, 0x20
cmp eax, 0x6e
jne 0x10004a10
mov eax, dword [esp + 0xc0]
cmp eax, esi
jae 0x100061c4
lea edx, [eax + 1]
mov dword [esp + 0xc0], edx
cmp byte [eax], 0x28
jne 0x100052b5
cmp edx, esi
jae 0x1000523a
lea eax, [edx + 1]
mov dword [esp + 0xc0], eax
movzx eax, byte [edx]
mov edx, eax
and edx, 0xffffffdf
sub edx, 0x41
cmp edx, 0x19
jbe 0x10005227
lea edx, [eax - 0x30]
cmp edx, 9
jbe 0x10005227
cmp eax, 0x5f
je 0x10005227
cmp eax, 0x29
jne 0x10004a10
mov ebx, dword [esp + 0xd0]
movsd xmm0, qword [0x100ae270]
mov edx, dword [esp + 0xc0]
mov ecx, dword [esp + 0xbc]
jmp 0x100043a2
mov eax, 1
mov dword [esp + 0x70], eax
jmp 0x10004253
mov edi, dword [esp + 0x68]
mov esi, dword [esp + 0x9c]
jmp 0x1000440a
cmp esi, edi
jae 0x1000525b
lea edx, [esi + 1]
mov dword [esp + 0xc0], edx
movzx eax, byte [esi]
movzx eax, byte [eax + 0x100ae161]
cmp al, 0xf
jbe 0x100045d3
dec edx
mov dword [esp + 0xc0], edx
mov eax, dword [esp + 0xc4]
xor edi, edi
mov esi, edx
mov dword [esp + 0xcc], edi
mov ecx, dword [esp + 0xbc]
mov dword [esp + 0xc8], eax
xor eax, eax
mov dword [esp + 0xa0], eax
mov ebx, ecx
xor eax, eax
mov dword [esp + 0xa4], eax
sub ebx, edx
mov dword [esp + 0xd0], ebx
jmp 0x10003e85
lea eax, [esp + 0xb8]
call fcn.10002bd0
mov esi, dword [esp + 0xc0]
mov edi, dword [esp + 0xc8]
mov edx, eax
jmp 0x10004796
add dword [esp + 0x94], eax
jmp case.0x1000370d.2
lea eax, [esp + 0xb8]
call fcn.10002bd0
mov esi, dword [esp + 0xc8]
jmp 0x10004b0d
lea eax, [esp + 0xb8]
call fcn.10002bd0
mov esi, dword [esp + 0xc8]
jmp 0x10004ae5
cmp edx, 0x30
jne 0x10004d11
mov eax, dword [esp + 0xc0]
mov ecx, dword [esp + 0xc8]
cmp eax, ecx
jae 0x10005bb3
lea edx, [eax + 1]
mov dword [esp + 0xc0], edx
movzx eax, byte [eax]
or al, 0x20
cmp al, 0x78
je 0x10005a8c
dec edx
mov dword [esp + 0xc0], edx
jmp 0x10004ced
lea eax, [edx + 1]
mov dword [esp + 0xc0], eax
movzx edx, byte [edx]
cmp edx, 0x30
jne 0x100050bc
mov edx, dword [esp + 0xc0]
cmp edx, ecx
jb 0x10004cd0
lea eax, [esp + 0xb8]
call fcn.10002bd0
cmp eax, 0x30
mov edx, eax
jne 0x100050bc
mov ecx, dword [esp + 0xc8]
jmp 0x10004ce6
xor eax, eax
mov dword [esp + 0x9c], eax
cmp edx, 0x2e
je 0x100052f0
xor esi, esi
xor edi, edi
mov dword [esp + 0x60], esi
xor esi, esi
xor eax, eax
xor ecx, ecx
mov dword [esp + 0x1e0], eax
lea eax, [edx - 0x30]
xor ebx, ebx
mov dword [esp + 0x58], ecx
xor ecx, ecx
mov dword [esp + 0x80], ebx
xor ebx, ebx
cmp eax, 9
mov dword [esp + 0x84], ebx
jbe 0x10004d61
cmp edx, 0x2e
jne 0x100053d0
mov dword [esp + 0x54], edi
mov ebx, ecx
xor edi, edi
mov dword [esp + 0x50], esi
cmp edx, 0x2e
je 0x10004e05
add dword [esp + 0x80], 1
adc dword [esp + 0x84], 0
cmp edi, 0x7c
jg 0x10005080
mov ecx, dword [esp + 0x58]
cmp edx, 0x30
cmovne ecx, dword [esp + 0x80]
test ebx, ebx
mov dword [esp + 0x58], ecx
je 0x1000509f
mov edx, dword [esp + edi*4 + 0x1e0]
inc ebx
cmp ebx, 9
lea edx, [edx + edx*4]
lea eax, [eax + edx*2]
mov dword [esp + edi*4 + 0x1e0], eax
jne 0x100050cd
mov eax, 1
inc edi
mov dword [esp + 0x9c], eax
xor ebx, ebx
mov eax, dword [esp + 0xc0]
cmp eax, dword [esp + 0xc8]
jae 0x10004e40
lea edx, [eax + 1]
mov dword [esp + 0xc0], edx
movzx edx, byte [eax]
lea eax, [edx - 0x30]
cmp eax, 9
jbe 0x10004d6d
cmp edx, 0x2e
jne 0x10004e5f
mov eax, dword [esp + 0x60]
test eax, eax
jne 0x100053db
mov eax, dword [esp + 0x80]
mov esi, 1
mov dword [esp + 0x60], esi
mov edx, dword [esp + 0x84]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0xc0]
cmp eax, dword [esp + 0xc8]
mov dword [esp + 0x54], edx
jb 0x10004de7
lea eax, [esp + 0xb8]
call fcn.10002bd0
mov edx, eax
lea eax, [eax - 0x30]
cmp edx, 0x2e
je 0x10004e05
cmp eax, 9
jbe 0x10004d6d
mov dword [esp + 0x68], edi
mov esi, dword [esp + 0x50]
mov ecx, ebx
mov edi, dword [esp + 0x54]
mov eax, dword [esp + 0x60]
test eax, eax
jne 0x10004e83
mov esi, dword [esp + 0x80]
mov edi, dword [esp + 0x84]
mov eax, dword [esp + 0x9c]
test eax, eax
je 0x100050de
mov eax, edx
or eax, 0x20
cmp eax, 0x65
je 0x10005388
test edx, edx
js 0x10004eb5
cmp dword [esp + 0xc8], 0
je 0x10004eb5
dec dword [esp + 0xc0]
mov eax, dword [esp + 0x1e0]
mov dword [esp + 0x60], eax
test eax, eax
je 0x10006443
mov ebx, dword [esp + 0x80]
mov eax, esi
mov edx, edi
xor eax, ebx
mov ebx, dword [esp + 0x84]
xor edx, ebx
mov ebx, eax
or ebx, edx
jne 0x100063f4
mov ebx, dword [esp + 0x80]
mov eax, 9
cmp eax, ebx
mov ebx, dword [esp + 0x84]
mov eax, 0
sbb eax, ebx
jl 0x100063f4
cmp dword [esp + 0xa0], 0x1e
jg 0x100063c1
mov edx, dword [esp + 0x60]
shr edx, 0x18
je 0x100063c1
test ecx, ecx
je 0x10004f8f
cmp ecx, 8
jg 0x10004f8b
mov eax, dword [esp + 0x68]
mov eax, dword [esp + eax*4 + 0x1e0]
je 0x100063b9
imul edx, eax, 0x64
cmp ecx, 7
je 0x10004f80
imul edx, eax, 0x3e8
cmp ecx, 6
je 0x10004f80
imul edx, eax, 0x2710
cmp ecx, 5
je 0x10004f80
imul edx, eax, 0x186a0
cmp ecx, 4
je 0x10004f80
imul edx, eax, 0xf4240
cmp ecx, 3
je 0x10004f80
imul edx, eax, 0x5f5e100
dec ecx
jne 0x100053c5
mov eax, dword [esp + 0x68]
mov dword [esp + eax*4 + 0x1e0], edx
inc dword [esp + 0x68]
mov edi, dword [esp + 0x58]
mov eax, 8
pxor xmm1, xmm1
mov dword [esp + 0x80], esi
cmp esi, eax
cvtsi2sd xmm1, dword [esp + 0x70]
cmovle eax, esi
cmp eax, edi
jl 0x10004fbb
cmp esi, 0x11
jle 0x100053ee
mov edi, dword [esp + 0x68]
lea eax, [edi - 1]
mov dword [esp + 0x68], eax
mov eax, dword [esp + edi*4 + 0x1dc]
test eax, eax
je 0x10004fbb
mov eax, dword [esp + 0x80]
mov ebx, 9
cdq
idiv ebx
test edx, edx
mov esi, edx
je 0x100054f6
cmp dword [esp + 0x80], 0
jns 0x10004ff7
add esi, 9
mov eax, 8
sub eax, esi
test edi, edi
mov ebx, dword [eax*4 + 0x100ae140]
je 0x100054d5
mov eax, 0x3b9aca00
xor edx, edx
idiv ebx
xor ecx, ecx
mov dword [esp + 0x58], ebx
mov dword [esp + 0x60], eax
xor eax, eax
mov dword [esp + 0x70], eax
mov dword [esp + 0x68], eax
jmp 0x10005035
inc ecx
cmp edi, ecx
je 0x10006481
mov eax, dword [esp + ecx*4 + 0x1e0]
xor edx, edx
mov ebx, dword [esp + 0x68]
div dword [esp + 0x58]
add eax, ebx
mov ebx, dword [esp + 0x60]
mov dword [esp + ecx*4 + 0x1e0], eax
imul edx, ebx
cmp dword [esp + 0x70], ecx
mov dword [esp + 0x68], edx
jne 0x1000502c
test eax, eax
jne 0x1000502c
mov eax, dword [esp + 0x70]
sub dword [esp + 0x80], 9
inc eax
and eax, 0x7f
mov dword [esp + 0x70], eax
jmp 0x1000502c
cmp edx, 0x30
je 0x10004dd7
or dword [esp + 0x3d0], 1
mov eax, 0x45c
mov dword [esp + 0x58], eax
jmp 0x10004dd7
mov dword [esp + edi*4 + 0x1e0], eax
mov edx, 1
mov ebx, 1
mov dword [esp + 0x9c], edx
jmp 0x10004dd7
mov edi, 1
mov dword [esp + 0x9c], edi
jmp 0x10004d1a
mov ecx, 1
mov dword [esp + 0x9c], ecx
jmp 0x10004dd7
test edx, edx
js 0x100050f3
cmp dword [esp + 0xc8], 0
je 0x100050f3
dec dword [esp + 0xc0]
call dword [sym.imp.msvcrt.dll__errno]
mov dword [eax], 0x16
mov eax, dword [esp + 0xbc]
xor esi, esi
mov dword [esp + 0xcc], esi
mov edi, eax
sub eax, dword [esp + 0xc0]
mov dword [esp + 0xd0], eax
mov eax, dword [esp + 0xc4]
mov dword [esp + 0xc8], eax
pxor xmm0, xmm0
mov ebx, dword [esp + 0xd0]
mov ecx, edi
mov edx, dword [esp + 0xc0]
jmp 0x100043a2
xor ecx, ecx
xor ebx, ebx
mov dword [esp + 0xa0], ecx
mov esi, edx
mov dword [esp + 0xa4], ebx
jmp 0x10003e6b
mov esi, edi
mov edi, dword [esp + 0xbc]
mov edx, dword [esp + 0xc0]
mov eax, edi
xor ecx, ecx
mov dword [esp + 0xc8], ecx
xor edi, edi
mov ebx, 1
mov dword [esp + 0x9c], edi
xor edi, edi
mov dword [esp + 0x70], ebx
sub eax, edx
mov edx, 0xffffffff
add eax, esi
xor esi, esi
mov dword [esp + 0x60], esi
xor esi, esi
mov dword [esp + 0xd0], eax
jmp 0x10004d2d
mov word [edx], 0xffff
sub ecx, 2
add edx, 2
jmp 0x10003a50
lea eax, [esp + 0xb8]
call fcn.10002bd0
jmp 0x1000436b
lea eax, [esp + 0xb8]
call fcn.10002bd0
mov ecx, dword [esp + 0xc8]
jmp 0x10004343
lea eax, [esp + 0xb8]
call fcn.10002bd0
mov ecx, dword [esp + 0xc8]
jmp 0x1000431b
lea eax, [esp + 0xb8]
call fcn.10002bd0
mov ecx, dword [esp + 0xc8]
jmp 0x100042f3
lea eax, [esp + 0xb8]
call fcn.10002bd0
mov edx, eax
jmp 0x10004253
mov edx, dword [esp + 0xc0]
mov esi, dword [esp + 0xc8]
jmp 0x10004b3b
lea eax, [esp + 0xb8]
call fcn.10002bd0
jmp 0x10004b50
movsx ebx, byte [ebx + 0x100ae020]
mov dword [esp + 0x68], ebx
jmp 0x100045e8
lea eax, [esp + 0xb8]
call fcn.10002bd0
mov edi, dword [esp + 0xc8]
mov edx, dword [esp + 0xc0]
movzx eax, byte [eax + 0x100ae161]
cmp al, 0xf
jbe 0x100045d3
test edi, edi
je 0x10004bf2
jmp 0x10004bea
mov eax, dword [esp + 0x60]
cdq
xor ecx, eax
xor ebx, edx
sub ecx, eax
mov dword [esp + 0xa0], ecx
sbb ebx, edx
mov edx, esi
mov dword [esp + 0xa4], ebx
mov esi, edx
jmp 0x10003e6b
mov ebx, dword [esp + 0xd0]
mov ecx, dword [esp + 0xbc]
dec edx
movsd xmm0, qword [0x100ae270]
mov dword [esp + 0xc0], edx
jmp 0x100043a2
mov ecx, esi
mov esi, edi
mov edi, dword [esp + 0x70]
mov eax, ecx
jmp 0x10003de2
mov eax, dword [esp + 0xc0]
cmp eax, dword [esp + 0xc8]
jae 0x10005378
lea edx, [eax + 1]
mov dword [esp + 0xc0], edx
movzx edx, byte [eax]
xor esi, esi
xor edi, edi
cmp edx, 0x30
jne 0x1000536b
add esi, 0xffffffff
mov eax, dword [esp + 0xc0]
adc edi, 0xffffffff
cmp eax, dword [esp + 0xc8]
jae 0x10005340
lea edx, [eax + 1]
mov dword [esp + 0xc0], edx
movzx edx, byte [eax]
cmp edx, 0x30
je 0x10005316
jmp 0x10005353
lea eax, [esp + 0xb8]
call fcn.10002bd0
cmp eax, 0x30
mov edx, eax
je 0x10005316
mov dword [esp + 0x60], 1
mov dword [esp + 0x9c], 1
jmp 0x10004d2d
mov dword [esp + 0x60], 1
jmp 0x10004d2d
lea eax, [esp + 0xb8]
call fcn.10002bd0
mov edx, eax
jmp 0x1000530d
mov dword [esp + 0x60], ecx
lea eax, [esp + 0xb8]
call fcn.10002d80
mov ecx, dword [esp + 0x60]
lea ebx, [edx - 0x80000000]
or ebx, eax
je 0x100050ff
add esi, eax
adc edi, edx
jmp 0x10004eb5
mov dword [esp + 0x80], eax
xor eax, eax
mov dword [esp + 0x7c], eax
jmp 0x100036d9
imul edx, eax, 0x989680
jmp 0x10004f80
xor eax, eax
mov dword [esp + 0x68], eax
jmp 0x10004e6d
mov dword [esp + 0x68], edi
mov esi, dword [esp + 0x50]
mov ecx, ebx
mov edi, dword [esp + 0x54]
jmp 0x10004e83
cmp esi, 9
mov eax, dword [esp + 0x1e0]
je 0x100054b0
cmp dword [esp + 0x80], 8
jle 0x1000546c
mov edi, dword [esp + 0x80]
lea ecx, [edi - 9]
mov edi, dword [esp + 0xa0]
imul ecx, ecx, 0xfffffffd
add ecx, edi
cmp ecx, 0x1e
jg 0x1000542f
mov edx, eax
shr edx, cl
test edx, edx
jne 0x10004fbb
mov edi, dword [esp + 0x80]
add eax, 0x80000000
pxor xmm0, xmm0
pxor xmm2, xmm2
cvtsi2sd xmm2, eax
addsd xmm2, qword [0x100ae2a0]
mulsd xmm1, xmm2
cvtsi2sd xmm0, dword [edi*4 + 0x100ae118]
mov edi, dword [esp + 0xbc]
mulsd xmm0, xmm1
jmp 0x10005131
mov edi, dword [esp + 0x80]
add eax, 0x80000000
pxor xmm0, xmm0
cvtsi2sd xmm0, eax
mov eax, 8
addsd xmm0, qword [0x100ae2a0]
mulsd xmm0, xmm1
pxor xmm1, xmm1
sub eax, edi
mov edi, dword [esp + 0xbc]
cvtsi2sd xmm1, dword [eax*4 + 0x100ae140]
divsd xmm0, xmm1
jmp 0x10005131
add eax, 0x80000000
pxor xmm0, xmm0
mov edi, dword [esp + 0xbc]
cvtsi2sd xmm0, eax
addsd xmm0, qword [0x100ae2a0]
mulsd xmm0, xmm1
jmp 0x10005131
xor ecx, ecx
mov dword [esp + 0x70], ecx
xor ecx, ecx
mov eax, dword [esp + 0x80]
mov edi, ecx
sub eax, esi
mov esi, dword [esp + 0x70]
add eax, 9
mov dword [esp + 0x80], eax
mov dword [esp + 0x68], edi
xor edx, edx
mov dword [esp + 0x70], edx
mov eax, dword [esp + 0x80]
cmp eax, 0x11
jle 0x10005526
cmp eax, 0x12
jne 0x1000562a
cmp dword [esp + esi*4 + 0x1e0], 0x89705e
ja 0x1000562a
mov eax, dword [esp + 0x68]
sub dword [esp + 0x70], 0x1d
dec eax
mov dword [esp + 0x60], eax
and eax, 0x7f
mov edi, eax
xor eax, eax
mov ecx, dword [esp + edi*4 + 0x1e0]
xor ebx, ebx
xor edx, edx
shld ebx, ecx, 0x1d
shl ecx, 0x1d
add eax, ecx
adc edx, ebx
mov ebx, 0x3b9aca00
cmp ebx, eax
mov ebx, 0
sbb ebx, edx
jae 0x100055c1
mov dword [esp], eax
lea ecx, [esp + 0xa8]
xor ebx, ebx
mov dword [esp + 0x10], ecx
mov ecx, 0x3b9aca00
movsd qword [esp + 0x58], xmm1
mov dword [esp + 8], ecx
mov dword [esp + 0xc], ebx
mov dword [esp + 4], edx
call fcn.10091d60
mov ecx, dword [esp + 0xa8]
movsd xmm1, qword [esp + 0x58]
mov dword [esp + edi*4 + 0x1e0], ecx
mov edx, dword [esp + 0x60]
and edx, 0x7f
cmp edi, esi
je 0x100055d8
cmp edi, edx
je 0x100055c7
cmp edi, esi
je 0x100055d8
lea edx, [edi - 1]
mov edi, edx
and edi, 0x7f
jmp 0x1000553b
mov ecx, eax
xor eax, eax
jmp 0x1000559a
lea edx, [edi - 1]
and edx, 0x7f
test ecx, ecx
je 0x10005618
mov edi, edx
jmp 0x1000553b
test eax, eax
mov ecx, eax
je 0x10005500
add dword [esp + 0x80], 9
dec esi
and esi, 0x7f
cmp dword [esp + 0x68], esi
jne 0x1000560c
mov dword [esp + 0x68], edx
lea eax, [edx - 1]
mov edi, dword [esp + edx*4 + 0x1e0]
and eax, 0x7f
or dword [esp + eax*4 + 0x1e0], edi
mov dword [esp + esi*4 + 0x1e0], ecx
jmp 0x10005500
mov dword [esp + 0x68], edi
mov ebx, edi
mov edi, edx
dec ebx
mov dword [esp + 0x60], ebx
jmp 0x1000553b
lea eax, [esi + 1]
mov edi, dword [esp + 0x68]
mov dword [esp + 0x68], eax
cmp esi, edi
je 0x1000566e
mov eax, dword [esp + esi*4 + 0x1e0]
cmp eax, 0x89705e
jbe 0x1000566e
cmp eax, 0x89705f
jne 0x1000649a
mov eax, dword [esp + 0x68]
and eax, 0x7f
cmp eax, edi
je 0x1000566e
cmp dword [esp + eax*4 + 0x1e0], 0xf2f09ff
ja 0x1000649a
cmp dword [esp + 0x80], 0x12
je 0x1000573d
cmp dword [esp + 0x80], 0x1c
mov eax, 0x1dcd65
mov ebx, 0x1dcd6500
mov ecx, 9
cmovl ecx, dword [esp + 0x9c]
mov edx, 1
cmovl eax, ebx
mov dword [esp + 0x60], eax
mov eax, 0x1ff
cmovl eax, edx
mov dword [esp + 0x58], eax
add dword [esp + 0x70], ecx
cmp esi, edi
je 0x1000566e
mov dword [esp + 0x4c], ecx
mov eax, esi
xor edx, edx
jmp 0x100056cd
inc eax
and eax, 0x7f
cmp edi, eax
je 0x10005719
mov ebx, dword [esp + eax*4 + 0x1e0]
movzx ecx, byte [esp + 0x4c]
mov dword [esp + 0x50], ebx
shr ebx, cl
mov ecx, dword [esp + 0x58]
add ebx, edx
mov edx, dword [esp + 0x50]
mov dword [esp + eax*4 + 0x1e0], ebx
and edx, ecx
mov ecx, dword [esp + 0x60]
imul edx, ecx
test ebx, ebx
jne 0x100056c5
cmp esi, eax
jne 0x100056c5
mov esi, dword [esp + 0x68]
sub dword [esp + 0x80], 9
and esi, 0x7f
lea ebx, [esi + 1]
mov dword [esp + 0x68], ebx
jmp 0x100056c5
test edx, edx
je 0x10005635
lea eax, [edi + 1]
and eax, 0x7f
cmp eax, esi
je 0x100064c0
mov dword [esp + edi*4 + 0x1e0], edx
mov edi, eax
jmp 0x10005635
cmp esi, edi
jne 0x10005751
mov edi, dword [esp + 0x68]
xor eax, eax
and edi, 0x7f
mov dword [esp + edi*4 + 0x1dc], eax
movd xmm0, dword [esp + esi*4 + 0x1e0]
movq qword [esp + 0xa8], xmm0
fild qword [esp + 0xa8]
mov edx, dword [esp + 0x68]
and edx, 0x7f
cmp edi, edx
fstp qword [esp + 0x80]
jne 0x1000578d
lea eax, [edi + 1]
and eax, 0x7f
mov edi, eax
xor eax, eax
mov dword [esp + edi*4 + 0x1dc], eax
mov eax, dword [esp + 0x70]
movd xmm0, dword [esp + edx*4 + 0x1e0]
movq qword [esp + 0xa8], xmm0
fild qword [esp + 0xa8]
fld dword [0x100ae2a8]
fmul qword [esp + 0x80]
lea ebx, [eax + 0x35]
mov eax, dword [esp + 0x78]
mov ecx, ebx
faddp st(1)
sub ecx, eax
cmp dword [esp + 0xa0], ecx
fstp qword [esp + 0x80]
movsd xmm0, qword [esp + 0x80]
mulsd xmm0, xmm1
movsd qword [esp + 0x80], xmm0
jle 0x10005a43
xor eax, eax
test ecx, ecx
cmovns eax, ecx
mov dword [esp + 0xa0], eax
mov dword [esp + 0x58], ecx
mov ecx, dword [esp + 0xa0]
mov eax, 0x69
mov dword [esp + 4], 0x3ff00000
movsd qword [esp + 0x50], xmm1
sub eax, ecx
mov dword [esp + 8], eax
xor eax, eax
mov dword [esp], eax
call fcn.10096d30
mov ecx, dword [esp + 0xa0]
mov dword [esp + 4], 0x3ff00000
fstp qword [esp + 0x68]
mov edx, dword [esp + 0x6c]
mov eax, dword [esp + 0x68]
mov dword [esp + 0x68], eax
mov eax, edx
and eax, 0x7fffffff
mov edx, eax
mov eax, dword [esp + 0x84]
and eax, 0x80000000
or edx, eax
mov eax, 0x35
mov dword [esp + 0x6c], edx
sub eax, ecx
mov dword [esp + 8], eax
xor eax, eax
mov dword [esp], eax
call fcn.10096d30
movsd xmm4, qword [esp + 0x80]
movsd qword [esp], xmm4
fstp qword [esp + 8]
call fcn.100964b0
mov ecx, dword [esp + 0x58]
movsd xmm2, qword [esp + 0x80]
movsd xmm1, qword [esp + 0x50]
fstp qword [esp + 0x60]
movsd xmm0, qword [esp + 0x60]
subsd xmm2, xmm0
addsd xmm2, qword [esp + 0x68]
movsd qword [esp + 0x80], xmm2
lea eax, [esi + 2]
and eax, 0x7f
cmp edi, eax
je 0x10005955
mov eax, dword [esp + eax*4 + 0x1e0]
cmp eax, 0x1dcd64ff
ja 0x10005a21
test eax, eax
jne 0x100058ee
lea eax, [esi + 3]
and eax, 0x7f
cmp edi, eax
je 0x100058fa
mulsd xmm1, qword [0x100ae2b0]
addsd xmm0, xmm1
mov edi, dword [esp + 0xa0]
mov eax, 0x35
sub eax, edi
dec eax
jle 0x10005955
mov dword [esp + 0xc], 0x3ff00000
xor esi, esi
movsd qword [esp], xmm0
mov dword [esp + 8], esi
movsd qword [esp + 0x58], xmm0
mov dword [esp + 0x50], ecx
call fcn.100964b0
pxor xmm1, xmm1
mov ecx, dword [esp + 0x50]
movsd xmm0, qword [esp + 0x58]
fstp qword [esp + 0x60]
movsd xmm5, qword [esp + 0x60]
ucomisd xmm5, xmm1
jp 0x10005955
jne 0x10005955
addsd xmm0, qword [0x100ae268]
mov edi, dword [esp + 0x40]
mov eax, ebx
movsd xmm1, qword [esp + 0x80]
and eax, 0x7fffffff
addsd xmm1, xmm0
subsd xmm1, qword [esp + 0x68]
cmp eax, edi
jl 0x100059f3
movapd xmm2, xmm1
andpd xmm2, xmmword [0x100ae2c0]
comisd xmm2, xmmword [0x100ae2d0]
jb 0x100059ae
inc dword [esp + 0x70]
mulsd xmm1, qword [0x100ae288]
cmp dword [esp + 0x9c], 0
je 0x100059ae
mov eax, dword [esp + 0xa0]
cmp ecx, eax
je 0x100059f3
mov eax, dword [esp + 0x70]
mov edi, dword [esp + 0x38]
add eax, 0x34
cmp eax, edi
jge 0x100059d5
pxor xmm2, xmm2
ucomisd xmm0, xmm2
jp 0x100059c9
je 0x100059f3
movzx eax, byte [esp + 0x9c]
and al, 1
je 0x100059f3
movsd qword [esp + 0xa0], xmm1
call dword [sym.imp.msvcrt.dll__errno]
movsd xmm1, qword [esp + 0xa0]
mov dword [eax], 0x22
mov eax, dword [esp + 0x70]
movsd qword [esp], xmm1
mov dword [esp + 8], eax
call fcn.10096d30
mov edi, dword [esp + 0xbc]
fstp qword [esp + 0xa0]
movsd xmm0, qword [esp + 0xa0]
jmp 0x10005131
cmp eax, 0x1dcd6500
jne 0x10005a32
lea eax, [esi + 3]
and eax, 0x7f
cmp edi, eax
je 0x10005a6b
mulsd xmm1, qword [0x100ae2b8]
addsd xmm0, xmm1
jmp 0x100058fa
cmp dword [esp + 0xa0], 0x35
mov dword [esp + 0x9c], 0
jne 0x10005a7c
xor eax, eax
pxor xmm0, xmm0
mov dword [esp + 0x68], eax
mov dword [esp + 0x6c], eax
jmp 0x100058c0
mulsd xmm1, qword [0x100ae288]
addsd xmm0, xmm1
jmp 0x100058fa
mov dword [esp + 0xa0], 0x18
jmp 0x100057fc
cmp edx, ecx
jae 0x1000619e
lea eax, [edx + 1]
mov dword [esp + 0xc0], eax
movzx ecx, byte [edx]
cmp ecx, 0x30
jne 0x10006190
mov eax, dword [esp + 0xc0]
cmp eax, dword [esp + 0xc8]
jae 0x1000611d
lea edx, [eax + 1]
mov dword [esp + 0xc0], edx
movzx ecx, byte [eax]
cmp ecx, 0x30
je 0x10005aaa
mov dword [esp + 0x80], 1
cmp ecx, 0x2e
je 0x100060a9
xor eax, eax
mov dword [esp + 0x68], eax
mov dword [esp + 0x6c], eax
mov dword [esp + 0x60], eax
xor eax, eax
xor esi, esi
movsd xmm1, qword [0x100ae268]
mov dword [esp + 0x58], eax
xor eax, eax
xor edi, edi
mov dword [esp + 0x9c], eax
pxor xmm0, xmm0
lea eax, [ecx - 0x30]
cmp eax, 9
jbe 0x10005b79
mov edx, ecx
or edx, 0x20
lea ebx, [edx - 0x61]
cmp ebx, 5
jbe 0x10005c1b
cmp ecx, 0x2e
jne 0x10005c61
mov ecx, dword [esp + 0x60]
test ecx, ecx
jne 0x10005e0a
mov dword [esp + 0x68], esi
mov eax, 1
mov dword [esp + 0x6c], edi
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0xc0]
cmp eax, dword [esp + 0xc8]
jae 0x10005bf0
lea edx, [eax + 1]
mov dword [esp + 0xc0], edx
movzx ecx, byte [eax]
lea eax, [ecx - 0x30]
cmp eax, 9
ja 0x10005b19
xor edx, edx
mov ecx, 7
cmp ecx, esi
mov ebx, edx
sbb ebx, edi
jl 0x10005c35
mov edx, dword [esp + 0x9c]
shl edx, 4
add eax, edx
mov dword [esp + 0x9c], eax
add esi, 1
mov eax, 1
mov dword [esp + 0x80], eax
adc edi, 0
jmp 0x10005b50
lea eax, [esp + 0xb8]
call fcn.10002bd0
mov ecx, dword [esp + 0xc8]
mov edx, dword [esp + 0xc0]
or eax, 0x20
cmp eax, 0x78
je 0x10005a8c
test ecx, ecx
je 0x10004ced
jmp 0x10004cc3
lea eax, [esp + 0xb8]
movsd qword [esp + 0x38], xmm0
movsd qword [esp + 0x40], xmm1
call fcn.10002bd0
movsd xmm1, qword [esp + 0x40]
movsd xmm0, qword [esp + 0x38]
mov ecx, eax
jmp 0x10005b11
cmp ecx, 0x2e
je 0x10005b33
cmp ecx, 0x39
jle 0x10005b79
lea eax, [edx - 0x57]
jmp 0x10005b79
mov ecx, 0xd
cmp ecx, esi
sbb edx, edi
jl 0x10006160
mulsd xmm1, qword [0x100ae280]
pxor xmm2, xmm2
cvtsi2sd xmm2, eax
mulsd xmm2, xmm1
addsd xmm0, xmm2
jmp 0x10005b9f
cmp dword [esp + 0x80], 0
je 0x10005e18
cmp dword [esp + 0x60], 0
jne 0x10005c7e
mov dword [esp + 0x68], esi
mov dword [esp + 0x6c], edi
mov eax, 7
cmp eax, esi
mov eax, 0
sbb eax, edi
jl 0x10005d3d
mov eax, esi
xor eax, 7
or eax, edi
je 0x10006068
mov eax, esi
xor eax, 6
or eax, edi
je 0x1000605b
mov eax, esi
xor eax, 5
or eax, edi
je 0x1000609c
mov eax, esi
xor eax, 4
or eax, edi
je 0x1000608f
mov eax, esi
xor eax, 3
or eax, edi
je 0x10006082
mov eax, esi
xor eax, 2
or eax, edi
je 0x10006075
mov eax, edi
or eax, esi
jne 0x10005d35
cmp edx, 0x70
je 0x10005d1a
cmp dword [esp + 0xc8], 0
je 0x10005cfc
dec dword [esp + 0xc0]
mov ebx, dword [esp + 0xd0]
pxor xmm0, xmm0
mov edx, dword [esp + 0xc0]
mov ecx, dword [esp + 0xbc]
jmp 0x100043a2
lea eax, [esp + 0xb8]
call fcn.10002d80
add edx, 0x80000000
or edx, eax
jne 0x10005cfc
jmp 0x10004a2e
shl dword [esp + 0x9c], 0x1c
cmp edx, 0x70
je 0x10005dd5
cmp dword [esp + 0xc8], 0
je 0x10005d57
dec dword [esp + 0xc0]
xor esi, esi
xor edi, edi
cmp dword [esp + 0x9c], 0
je 0x10005cfc
mov eax, dword [esp + 0x68]
mov edx, dword [esp + 0x6c]
add eax, 0xfffffff8
adc edx, 0xffffffff
shld edx, eax, 2
shl eax, 2
add esi, eax
mov eax, dword [esp + 0x34]
adc edi, edx
cmp dword [esp + 0x48], esi
sbb eax, edi
jl 0x10006018
mov eax, dword [esp + 0x4c]
cmp esi, eax
mov eax, edi
sbb eax, 0xffffffff
jl 0x10005fd8
mov eax, dword [esp + 0x9c]
jmp 0x10005dbf
inc eax
movapd xmm1, xmm0
subsd xmm1, qword [0x100ae268]
addsd xmm0, xmm1
add esi, 0xffffffff
adc edi, 0xffffffff
test eax, eax
js 0x10005e32
add eax, eax
comisd xmm0, xmmword [0x100ae288]
jae 0x10005da8
addsd xmm0, xmm0
jmp 0x10005db9
lea eax, [esp + 0xb8]
movsd qword [esp + 0x80], xmm0
call fcn.10002d80
movsd xmm0, qword [esp + 0x80]
mov esi, eax
mov edi, edx
lea eax, [edx - 0x80000000]
or eax, esi
jne 0x10005d5b
jmp 0x10004a2e
cmp dword [esp + 0x80], 0
jne 0x10005c7e
cmp dword [esp + 0xc8], 0
je 0x10004a2e
dec dword [esp + 0xc0]
jmp 0x10004a2e
mov dword [esp + 0x9c], eax
mov eax, esi
mov edx, edi
add eax, 0x20
mov ebx, dword [esp + 0x30]
adc edx, 0
sub eax, dword [esp + 0x50]
sbb edx, dword [esp + 0x54]
cmp eax, ebx
mov eax, edx
sbb eax, 0
jge 0x10005e70
mov ebx, dword [esp + 0x78]
mov eax, esi
sub eax, ebx
add eax, 0x20
mov dword [esp + 0xa0], eax
js 0x10005f17
cmp dword [esp + 0xa0], 0x34
jle 0x10005f20
pxor xmm5, xmm5
pxor xmm2, xmm2
cvtsi2sd xmm5, dword [esp + 0x70]
movsd qword [esp + 0xa0], xmm5
mov eax, dword [esp + 0x9c]
mulsd xmm0, qword [esp + 0xa0]
pxor xmm1, xmm1
add eax, 0x80000000
cvtsi2sd xmm1, eax
addsd xmm1, qword [0x100ae2a0]
mulsd xmm1, qword [esp + 0xa0]
addsd xmm1, xmm2
addsd xmm0, xmm1
pxor xmm1, xmm1
subsd xmm0, xmm2
ucomisd xmm0, xmm1
jp 0x10005edf
je 0x10006038
mov dword [esp + 8], esi
movsd qword [esp], xmm0
call fcn.10096d30
mov ebx, dword [esp + 0xd0]
mov edx, dword [esp + 0xc0]
mov ecx, dword [esp + 0xbc]
fstp qword [esp + 0xa0]
movsd xmm0, qword [esp + 0xa0]
jmp 0x100043a2
xor eax, eax
mov dword [esp + 0xa0], eax
mov dword [esp + 4], 0x3ff00000
mov ebx, dword [esp + 0xa0]
mov eax, 0x54
movsd qword [esp + 0x60], xmm0
sub eax, ebx
mov dword [esp + 8], eax
xor eax, eax
mov dword [esp], eax
call fcn.10096d30
pxor xmm4, xmm4
cvtsi2sd xmm4, dword [esp + 0x70]
movsd qword [esp + 0xa0], xmm4
mov eax, dword [esp + 0xa4]
movsd xmm0, qword [esp + 0x60]
and eax, 0x80000000
mov ecx, eax
fstp qword [esp + 0x68]
mov eax, dword [esp + 0x6c]
movq xmm7, qword [esp + 0x68]
movq qword [esp + 0x80], xmm7
and eax, 0x7fffffff
or ecx, eax
cmp ebx, 0x1f
mov dword [esp + 0x84], ecx
movsd xmm2, qword [esp + 0x80]
jg 0x10005e95
pxor xmm1, xmm1
ucomisd xmm0, xmm1
jp 0x10005fb8
je 0x10005e95
mov eax, dword [esp + 0x9c]
test al, 1
jne 0x10005e95
inc eax
pxor xmm0, xmm0
mov dword [esp + 0x9c], eax
jmp 0x10005e95
call dword [sym.imp.msvcrt.dll__errno]
pxor xmm0, xmm0
movsd xmm1, qword [0x100ae298]
cvtsi2sd xmm0, dword [esp + 0x70]
mov dword [eax], 0x22
mulsd xmm0, xmm1
mov ebx, dword [esp + 0xd0]
mulsd xmm0, xmm1
mov edx, dword [esp + 0xc0]
mov ecx, dword [esp + 0xbc]
jmp 0x100043a2
call dword [sym.imp.msvcrt.dll__errno]
pxor xmm0, xmm0
movsd xmm1, qword [0x100ae290]
cvtsi2sd xmm0, dword [esp + 0x70]
mov dword [eax], 0x22
jmp 0x10005ff6
movsd qword [esp + 0xa0], xmm0
call dword [sym.imp.msvcrt.dll__errno]
movsd xmm0, qword [esp + 0xa0]
mov dword [eax], 0x22
jmp 0x10005edf
shl dword [esp + 0x9c], 8
jmp 0x10005d3d
shl dword [esp + 0x9c], 4
jmp 0x10005d3d
shl dword [esp + 0x9c], 0x18
jmp 0x10005d3d
shl dword [esp + 0x9c], 0x14
jmp 0x10005d3d
shl dword [esp + 0x9c], 0x10
jmp 0x10005d3d
shl dword [esp + 0x9c], 0xc
jmp 0x10005d3d
mov eax, dword [esp + 0xc0]
cmp eax, dword [esp + 0xc8]
jae 0x10006146
lea edx, [eax + 1]
mov dword [esp + 0xc0], edx
movzx ecx, byte [eax]
xor ebx, ebx
mov dword [esp + 0x68], ebx
mov dword [esp + 0x6c], ebx
jmp 0x100060f8
lea edx, [eax + 1]
mov dword [esp + 0xc0], edx
movzx ecx, byte [eax]
add dword [esp + 0x68], 0xffffffff
mov dword [esp + 0x80], 1
adc dword [esp + 0x6c], 0xffffffff
cmp ecx, 0x30
jne 0x10006139
mov eax, dword [esp + 0xc0]
cmp eax, dword [esp + 0xc8]
jb 0x100060d6
lea eax, [esp + 0xb8]
call fcn.10002bd0
mov ecx, eax
jmp 0x100060e3
lea eax, [esp + 0xb8]
call fcn.10002bd0
cmp eax, 0x30
mov ecx, eax
je 0x10005aaa
jmp 0x10005ad0
mov dword [esp + 0x60], 1
jmp 0x10005af2
lea eax, [esp + 0xb8]
call fcn.10002bd0
mov ecx, eax
jmp 0x100060ca
test eax, eax
je 0x10005b9f
cmp dword [esp + 0x58], 0
jne 0x10005b9f
movsd xmm2, qword [0x100ae288]
mov dword [esp + 0x58], 1
mulsd xmm2, xmm1
addsd xmm0, xmm2
jmp 0x10005b9f
xor esi, esi
mov dword [esp + 0x80], esi
jmp 0x10005adb
lea eax, [esp + 0xb8]
call fcn.10002bd0
mov ecx, eax
jmp 0x10005aa1
mov ebx, dword [esp + 0x9c]
jmp 0x10003e1e
lea eax, [esp + 0xb8]
call fcn.10002bd0
mov esi, dword [esp + 0xc8]
mov edx, dword [esp + 0xc0]
cmp eax, 0x28
je 0x10004b3b
test esi, esi
mov ebx, dword [esp + 0xd0]
mov ecx, dword [esp + 0xbc]
jne 0x100052c3
movsd xmm0, qword [0x100ae270]
jmp 0x100043a2
mov esi, edi
mov edi, eax
jmp 0x10005168
lea edx, [esp + 0xe0]
mov ecx, 0x100
jmp 0x10004863
mov eax, dword [esp + 0x7c]
add edx, 2
sub ecx, 2
mov word [edx - 2], ax
jmp 0x1000486c
movzx eax, byte [edx - 1]
movzx esi, bl
cmp eax, esi
jge 0x1000637b
movzx ebx, byte [esp + 0x9c]
lea edi, [esp + eax + 0xe0]
mov dword [esp + 0x7c], ebx
mov ebx, esi
sub ebx, eax
mov eax, edi
mov dword [esp + 0xa0], ebx
cmp ebx, 8
jae 0x100062e5
and dword [esp + 0xa0], 7
mov ebx, dword [esp + 0xa0]
je 0x10006299
mov dword [esp + 0xa0], edx
xor edi, edi
movzx edx, byte [esp + 0x7c]
mov byte [eax + edi], dl
inc edi
cmp edi, ebx
jb 0x10006285
mov edx, dword [esp + 0xa0]
movzx eax, byte [edx + 2]
inc ecx
jmp 0x100048de
mov ebx, dword [esp + 0x98]
movzx eax, byte [esp + 0x9c]
inc ebx
mov byte [esp + 0x10d], al
movzx eax, byte [ebx]
mov dword [esp + 0x98], ebx
cmp al, 0x5d
jne 0x100048c8
jmp 0x10003ac0
mov dword [esp + 0x98], ecx
mov esi, dword [esp + 0x70]
mov edi, dword [esp + 0x68]
jmp 0x10003ac0
imul ebx, dword [esp + 0x7c], 0x1010101
test al, 1
mov dword [esp + 0x98], ebx
jne 0x100063a2
test al, 2
jne 0x10006387
mov edi, dword [esp + 0xa0]
cmp edi, 8
jb 0x1000626b
mov dword [esp + 0x58], edx
mov ebx, edi
xor edi, edi
and ebx, 0xfffffff8
mov dword [esp + 0x60], ebx
mov ebx, dword [esp + 0xa0]
mov edx, dword [esp + 0x98]
mov dword [eax + edi], edx
mov dword [eax + edi + 4], edx
add edi, 8
mov edx, dword [esp + 0x60]
cmp edi, edx
jb 0x1000632a
mov dword [esp + 0xa0], ebx
mov edx, dword [esp + 0x58]
add eax, edi
jmp 0x1000626b
mov ebx, dword [esp + 0x98]
movzx eax, byte [esp + 0x9c]
inc ebx
mov byte [esp + 0x13d], al
movzx eax, byte [ebx]
mov dword [esp + 0x98], ebx
jmp 0x100062c4
movzx eax, byte [edx + 2]
lea ecx, [edx + 2]
jmp 0x100048de
mov ebx, dword [esp + 0x98]
add eax, 2
mov word [eax - 2], bx
sub dword [esp + 0xa0], 2
jmp 0x10006304
movzx ebx, byte [esp + 0x98]
inc eax
mov byte [edi], bl
dec dword [esp + 0xa0]
jmp 0x100062fc
imul edx, eax, 0xa
jmp 0x10004f80
mov eax, dword [esp + 0x60]
pxor xmm0, xmm0
pxor xmm1, xmm1
cvtsi2sd xmm0, dword [esp + 0x70]
mov edi, dword [esp + 0xbc]
add eax, 0x80000000
cvtsi2sd xmm1, eax
addsd xmm1, qword [0x100ae2a0]
mulsd xmm0, xmm1
jmp 0x10005131
mov eax, dword [esp + 0x28]
cmp dword [esp + 0x2c], esi
sbb eax, edi
jl 0x1000644f
mov eax, dword [esp + 0x4c]
cmp esi, eax
mov eax, edi
sbb eax, 0xffffffff
jge 0x10004f25
call dword [sym.imp.msvcrt.dll__errno]
movsd xmm1, qword [0x100ae298]
pxor xmm0, xmm0
mov edi, dword [esp + 0xbc]
cvtsi2sd xmm0, dword [esp + 0x70]
mulsd xmm0, xmm1
mulsd xmm0, xmm1
mov dword [eax], 0x22
jmp 0x10005131
mov edi, dword [esp + 0xbc]
jmp 0x1000512d
call dword [sym.imp.msvcrt.dll__errno]
movsd xmm1, qword [0x100ae290]
pxor xmm0, xmm0
mov edi, dword [esp + 0xbc]
cvtsi2sd xmm0, dword [esp + 0x70]
mulsd xmm0, xmm1
mulsd xmm0, xmm1
mov dword [eax], 0x22
jmp 0x10005131
mov eax, dword [esp + 0x68]
test eax, eax
je 0x100054dd
mov dword [esp + edi*4 + 0x1e0], eax
inc ecx
jmp 0x100054dd
cmp dword [esp + 0x80], 0x1b
jg 0x100064d3
mov dword [esp + 0x60], 0x1dcd6500
mov ecx, dword [esp + 0x9c]
mov dword [esp + 0x58], 1
jmp 0x100056b3
lea eax, [edi - 1]
and eax, 0x7f
or dword [esp + eax*4 + 0x1e0], 1
jmp 0x10005635
add dword [esp + 0x70], 9
mov ecx, 9
mov dword [esp + 0x60], 0x1dcd65
mov dword [esp + 0x58], 0x1ff
jmp 0x100056bb