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

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
mov esi, ecx
push ebx
and esp, 0xfffffff0
add esp, 0xffffff80
mov edx, dword [ebp + 8]
mov eax, dword [ecx + 4]
mov edi, dword [ecx + 0x20]
mov ebx, dword [ecx + 8]
mov dword [esp + 0x6c], ecx
mov dword [ecx + 0x28], edx
mov ecx, eax
shl ecx, 2
je 0x46c5c0
mov ecx, dword [edx]
mov edx, dword [edx + 4]
mov dword [esp + 0x50], edx
mov edx, dword [esi + 0x18]
mov dword [esp + 0x68], ecx
mov dword [edx], 0
mov dword [edx + 4], 0
mov esi, dword [ebx]
lea edx, [ecx + 8]
mov dword [esp + 0x60], edx
lea edx, [ebx + 4]
lea ecx, [edi + esi]
mov dword [esp + 0x58], edx
movzx edx, byte [ecx]
cmp dl, 0x5b
je 0x46c450
cmp dl, 0x7b
je 0x46c350
cmp dl, 0x66
je 0x46c748
ja 0x46c590
cmp dl, 0x2d
je 0x46c874
ja 0x46c868
cmp dl, 0x22
jne 0x46c5a8
mov eax, dword [esp + 0x68]
mov edi, dword [esp + 0x50]
mov dword [eax + 8], 0
add eax, 0x10
lea ebx, [edi + 4]
mov dword [eax - 4], 0x22000000
mov edx, ebx
mov dword [esp + 0x60], eax
lea eax, [ecx + 1]
movzx ecx, byte [ecx + 1]
mov byte [edi + 4], cl
cmp cl, 0x22
je 0x46d941
mov dword [esp + 0x68], ebx
jmp 0x46c31c
add eax, 1
add edx, 1
movzx ecx, byte [eax]
mov byte [edx], cl
cmp cl, 0x22
je 0x46cc80
movzx ebx, byte [eax + 1]
cmp cl, 0x5c
jne 0x46c308
cmp bl, 0x75
je 0x46ca50
movzx ecx, byte [ebx + 0x582720]
test cl, cl
je 0x46c5da
mov byte [edx], cl
add eax, 2
add edx, 1
jmp 0x46c30e
mov edx, dword [ebx + eax*4 - 4]
cmp byte [edi + edx], 0x7d
jne 0x46c5a8
mov edx, dword [ebx + 4]
mov dword [esp + 0x4c], 1
cmp byte [edi + edx], 0x7d
je 0x46c718
mov ebx, dword [esp + 0x6c]
mov esi, dword [esp + 0x4c]
cmp esi, dword [ebx + 0x14]
jae 0x46c6a8
mov eax, dword [ebx + 0x1c]
mov ecx, dword [ebx + 0x28]
mov byte [eax + esi], 0
mov eax, dword [ebx + 0x18]
mov ebx, dword [esp + 0x58]
lea eax, [eax + esi*8]
mov esi, dword [esp + 0x60]
mov edx, esi
sub edx, dword [ecx]
mov dword [eax + 4], 0
sar edx, 3
mov dword [eax], edx
mov edx, dword [ebx]
add edx, edi
cmp byte [edx], 0x22
jne 0x46c5a8
mov dword [eax + 4], 1
mov eax, dword [esp + 0x50]
add esi, 0x10
mov ebx, eax
sub ebx, dword [ecx + 4]
mov ecx, ebx
sar ebx, 0x1f
or ebx, 0x22000000
mov dword [esi - 8], ecx
mov dword [esi - 4], ebx
movzx ecx, byte [edx + 1]
lea ebx, [eax + 4]
mov dword [esp + 0x60], esi
mov esi, eax
lea eax, [edx + 1]
mov edx, ebx
mov byte [esi + 4], cl
cmp cl, 0x22
je 0x46d93a
mov dword [esp + 0x68], edi
mov dword [esp + 0x40], ebx
jmp 0x46c41c
add eax, 1
add edx, 1
movzx ecx, byte [eax]
mov byte [edx], cl
cmp cl, 0x22
je 0x46cb10
movzx ebx, byte [eax + 1]
cmp cl, 0x5c
jne 0x46c408
cmp bl, 0x75
je 0x46c5f0
movzx ecx, byte [ebx + 0x582720]
test cl, cl
je 0x46c5da
mov byte [edx], cl
add eax, 2
add edx, 1
jmp 0x46c40e
mov edx, dword [ebx + eax*4 - 4]
cmp byte [edi + edx], 0x5d
jne 0x46c5a8
mov edx, dword [ebx + 4]
cmp byte [edi + edx], 0x5d
je 0x46c6b8
mov dword [esp + 0x4c], 1
mov eax, dword [esp + 0x6c]
mov ebx, dword [esp + 0x4c]
cmp ebx, dword [eax + 0x14]
jae 0x46c6a8
mov ebx, eax
mov ecx, dword [esp + 0x4c]
mov eax, dword [eax + 0x1c]
mov byte [eax + ecx], 1
mov eax, dword [ebx + 0x18]
lea edx, [eax + ecx*8]
mov eax, dword [ebx + 0x28]
mov ebx, dword [esp + 0x60]
mov ecx, ebx
sub ecx, dword [eax]
add ebx, 8
mov dword [edx + 4], 1
mov eax, ecx
mov dword [esp + 0x60], ebx
sar eax, 3
mov dword [edx], eax
mov ebx, dword [esp + 0x58]
mov eax, dword [ebx]
lea edx, [ebx + 4]
mov dword [esp + 0x68], edx
add eax, edi
mov dword [esp + 0x40], eax
movzx eax, byte [eax]
cmp al, 0x5b
je 0x46cbe8
cmp al, 0x7b
je 0x46c728
cmp al, 0x66
je 0x46d393
ja 0x46cd28
cmp al, 0x2d
je 0x46d554
ja 0x46d400
cmp al, 0x22
jne 0x46c5a8
mov eax, dword [esp + 0x6c]
mov ebx, dword [esp + 0x50]
mov eax, dword [eax + 0x28]
mov ecx, ebx
sub ecx, dword [eax + 4]
mov eax, ecx
mov ecx, dword [esp + 0x60]
cdq
or edx, 0x22000000
mov dword [ecx], eax
add ecx, 8
mov dword [ecx - 4], edx
mov edx, dword [esp + 0x40]
mov dword [esp + 0x60], ecx
lea ecx, [ebx + 4]
lea eax, [edx + 1]
movzx edx, byte [edx + 1]
mov byte [ebx + 4], dl
cmp dl, 0x22
je 0x46ddc7
mov dword [esp + 0x58], edi
mov dword [esp + 0x40], ecx
jmp 0x46c564
add eax, 1
add ecx, 1
movzx edx, byte [eax]
mov byte [ecx], dl
cmp dl, 0x22
je 0x46d531
movzx ebx, byte [eax + 1]
cmp dl, 0x5c
jne 0x46c550
cmp bl, 0x75
je 0x46ced8
movzx edx, byte [ebx + 0x582720]
test dl, dl
je 0x46c5da
mov byte [ecx], dl
add eax, 2
add ecx, 1
jmp 0x46c556
cmp dl, 0x6e
je 0x46cc08
cmp dl, 0x74
je 0x46c7a8
lea esi, [esi]
mov eax, 3
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret 4
lea esp, [ebp - 0xc]
mov eax, 0xc
pop ebx
pop esi
pop edi
pop ebp
ret 4
cmp byte [eax + 6], 0x5c
je 0x46c808
lea esp, [ebp - 0xc]
mov eax, 5
pop ebx
pop esi
pop edi
pop ebp
ret 4
movzx ebx, byte [eax + 3]
movzx ecx, byte [eax + 2]
mov ecx, dword [ecx*4 + 0x5831f8]
or ecx, dword [ebx*4 + 0x582eb0]
movzx ebx, byte [eax + 5]
or ecx, dword [ebx*4 + 0x582820]
movzx ebx, byte [eax + 4]
or ecx, dword [ebx*4 + 0x582b68]
lea ebx, [ecx - 0xd800]
cmp ebx, 0x3ff
jbe 0x46c5d0
add eax, 6
cmp ecx, 0x7f
jbe 0x46cc70
cmp ecx, 0x7ff
jbe 0x46ca23
cmp ecx, 0xffff
jbe 0x46d28d
cmp ecx, 0x10ffff
ja 0x46c5da
mov ebx, ecx
mov edi, ecx
mov esi, ecx
and ecx, 0x3f
shr ebx, 6
shr esi, 0xc
add edx, 4
movd xmm0, dword [0x58f9d0]
shl ecx, 8
and ebx, 0x3f
shr edi, 0x12
or ecx, ebx
mov ebx, esi
and ebx, 0x3f
shl ecx, 8
or ecx, ebx
mov ebx, edi
movzx ebx, bl
shl ecx, 8
or ecx, ebx
movd xmm1, ecx
paddb xmm1, xmm0
movd dword [edx - 4], xmm1
jmp 0x46c40e
mov eax, 4
jmp 0x46c5ad
movdqu xmm0, xmmword [0x58f9c0]
mov edi, dword [esp + 0x68]
mov ecx, 2
movups xmmword [edi + 8], xmm0
add edi, 0x18
mov dword [esp + 0x60], edi
mov dword [edi], 0
lea edx, [edi + 8]
mov dword [edi + 4], 0x72000000
mov edi, dword [esp + 0x68]
sub edx, edi
mov dword [edi + 4], 0x72000000
sar edx, 3
mov dword [edi], edx
mov edi, dword [esp + 0x6c]
mov dword [edi + 0xc], ecx
cmp ecx, eax
jne 0x46c5a8
lea esp, [ebp - 0xc]
xor eax, eax
pop ebx
pop esi
pop edi
pop ebp
ret 4
movdqu xmm0, xmmword [0x58f9b0]
jmp 0x46c6c0
mov eax, dword [ebx + 4]
cmp byte [edi + eax], 0x7d
je 0x46cf98
add dword [esp + 0x4c], 1
mov dword [esp + 0x58], edx
jmp 0x46c373
mov edi, dword [esp + 0x6c]
mov edi, dword [edi + 0x24]
mov edx, edi
mov dword [esp + 0x60], edi
sub edx, esi
cmp edx, 5
jbe 0x46ccd0
mov edx, dword [ecx + 1]
movzx ecx, byte [ecx + 5]
movzx ecx, byte [ecx + 0x582620]
xor edx, 0x65736c61
or ecx, edx
sete dl
test dl, dl
je 0x46ca3f
mov edi, dword [esp + 0x68]
mov ecx, 1
mov dword [edi + 8], 0
add edi, 0x10
mov dword [edi - 4], 0x66000000
mov dword [esp + 0x60], edi
jmp 0x46c6d4
mov edi, dword [esp + 0x6c]
mov edi, dword [edi + 0x24]
mov edx, edi
mov dword [esp + 0x60], edi
sub edx, esi
cmp edx, 4
jbe 0x46cce8
mov edx, dword [ecx]
movzx ecx, byte [ecx + 4]
movzx ecx, byte [ecx + 0x582620]
xor edx, 0x65757274
or ecx, edx
sete dl
test dl, dl
je 0x46ccee
mov edi, dword [esp + 0x68]
mov ecx, 1
mov dword [edi + 8], 0
add edi, 0x10
mov dword [edi - 4], 0x74000000
mov dword [esp + 0x60], edi
jmp 0x46c6d4
cmp byte [eax + 7], 0x75
jne 0x46c5da
movzx edi, byte [eax + 9]
movzx esi, byte [eax + 8]
mov esi, dword [esi*4 + 0x5831f8]
or esi, dword [edi*4 + 0x582eb0]
movzx edi, byte [eax + 0xb]
or esi, dword [edi*4 + 0x582820]
movzx edi, byte [eax + 0xa]
or esi, dword [edi*4 + 0x582b68]
or ecx, esi
shr ecx, 0x10
jne 0x46c5da
shl ebx, 0xa
sub esi, 0xdc00
add eax, 0xc
mov ecx, ebx
or ecx, esi
add ecx, 0x10000
jmp 0x46c62d
sub edx, 0x30
cmp dl, 9
ja 0x46c5a8
mov edi, dword [esp + 0x6c]
mov dword [esp + 4], 0x598160
mov dword [esp + 0x40], ecx
mov eax, dword [edi + 0x24]
mov dword [esp + 0x50], eax
add eax, 0x20
sub eax, esi
mov dword [esp], eax
call fcn.0054fb60
mov dword [esp + 0x4c], eax
mov edx, eax
mov esi, eax
test eax, eax
je 0x46d32b
mov edi, dword [edi + 0x24]
mov ecx, dword [esp + 0x40]
mov eax, edi
sub eax, dword [ebx]
mov dword [esp + 4], ecx
mov dword [esp], edx
mov dword [esp + 8], eax
call sub.msvcrt.dll_memcpy
sub edi, dword [ebx]
xor eax, eax
movdqu xmm0, xmmword [str.________________failed_to_read_ffailed_to_write]
mov edx, edi
add edx, esi
movups xmmword [edx], xmm0
movups xmmword [edx + 0x10], xmm0
movzx ecx, byte [esi]
cmp cl, 0x2d
sete al
lea edi, [esi + eax]
movzx eax, byte [edi]
mov dword [esp + 0x40], edi
mov byte [esp + 0x3c], al
sub eax, 0x30
cmp al, 9
ja 0x46ccb0
mov dword [esp + 0x50], 0
mov esi, ecx
mov dword [esp + 0x54], 0
mov ecx, dword [esp + 0x50]
mov ebx, dword [esp + 0x54]
movzx eax, al
shld ebx, ecx, 2
shl ecx, 2
add ecx, dword [esp + 0x50]
adc ebx, dword [esp + 0x54]
shld ebx, ecx, 1
add ecx, ecx
add ecx, eax
adc ebx, 0
mov dword [esp + 0x50], ecx
mov dword [esp + 0x54], ebx
mov ebx, edi
movzx edx, byte [edi + 1]
add edi, 1
lea eax, [edx - 0x30]
cmp al, 9
jbe 0x46c90e
mov ecx, esi
mov esi, dword [esp + 0x40]
mov eax, edi
sub eax, esi
mov dword [esp + 0x48], eax
je 0x46ccb0
cmp byte [esp + 0x3c], 0x30
jne 0x46c971
cmp dword [esp + 0x48], 1
jne 0x46ccb0
cmp dl, 0x2e
je 0x46d018
and edx, 0xffffffdf
mov dword [esp + 0x30], 0
mov dword [esp + 0x34], 0
cmp dl, 0x45
je 0x46d140
cmp cl, 0x2d
je 0x46d581
cmp dword [esp + 0x48], 0x14
ja 0x46ccb0
je 0x46cc96
mov eax, dword [esp + 0x54]
test eax, eax
js 0x46d5b6
mov ebx, dword [esp + 0x68]
mov eax, dword [esp + 0x50]
mov edx, dword [esp + 0x54]
mov dword [ebx + 0x10], eax
lea eax, [ebx + 0x18]
mov dword [ebx + 0x14], edx
mov edx, 0x6c000000
mov dword [esp + 0x60], eax
xor eax, eax
mov dword [ebx + 8], eax
mov dword [ebx + 0xc], edx
movzx eax, byte [edi]
cmp byte [eax + 0x582620], 0
mov eax, dword [esp + 0x4c]
mov dword [esp], eax
jne 0x46ccb7
call fcn.0054fb20
mov edi, dword [esp + 0x6c]
mov eax, dword [edi + 0x28]
mov eax, dword [eax]
mov dword [esp + 0x68], eax
mov eax, edi
mov ecx, dword [esp + 0x58]
sub ecx, dword [eax + 8]
mov edi, dword [esp + 0x60]
mov eax, dword [eax + 4]
sar ecx, 2
jmp 0x46c6d4
mov ebx, ecx
and ecx, 0x3f
add edx, 2
shr ebx, 6
add ecx, 0xffffff80
sub ebx, 0x40
mov byte [edx - 1], cl
mov byte [edx - 2], bl
jmp 0x46c40e
lea esp, [ebp - 0xc]
mov eax, 7
pop ebx
pop esi
pop edi
pop ebp
ret 4
movzx ebx, byte [eax + 3]
movzx ecx, byte [eax + 2]
mov ecx, dword [ecx*4 + 0x5831f8]
or ecx, dword [ebx*4 + 0x582eb0]
movzx ebx, byte [eax + 5]
or ecx, dword [ebx*4 + 0x582820]
movzx ebx, byte [eax + 4]
or ecx, dword [ebx*4 + 0x582b68]
lea ebx, [ecx - 0xd800]
cmp ebx, 0x3ff
jbe 0x46cb80
add eax, 6
cmp ecx, 0x7f
jbe 0x46cd18
cmp ecx, 0x7ff
jbe 0x46d335
cmp ecx, 0xffff
jbe 0x46d3d6
cmp ecx, 0x10ffff
ja 0x46c5da
mov esi, ecx
mov edi, ecx
mov ebx, ecx
and ecx, 0x3f
shr esi, 6
shl ecx, 8
add edx, 4
movd xmm0, dword [0x58f9d0]
shr ebx, 0xc
and esi, 0x3f
shr edi, 0x12
or ecx, esi
and ebx, 0x3f
shl ecx, 8
or ecx, ebx
mov ebx, edi
movzx ebx, bl
shl ecx, 8
or ecx, ebx
movd xmm2, ecx
paddb xmm2, xmm0
movd dword [edx - 4], xmm2
jmp 0x46c30e
mov ebx, dword [esp + 0x40]
mov eax, edx
mov edi, dword [esp + 0x68]
sub eax, ebx
mov ebx, dword [esp + 0x50]
mov ecx, dword [esp + 0x58]
mov dword [ebx], eax
lea eax, [edx + 1]
add ecx, 4
mov byte [edx], 0
mov dword [esp + 0x50], eax
mov eax, dword [ecx]
cmp byte [edi + eax], 0x3a
jne 0x46c5a8
lea eax, [ecx + 8]
mov dword [esp + 0x58], eax
mov eax, dword [ecx + 4]
add eax, edi
movzx ebx, byte [eax]
mov dword [esp + 0x48], eax
cmp bl, 0x5b
je 0x46de8f
cmp bl, 0x7b
jne 0x46de08
mov eax, dword [ecx + 8]
cmp byte [edi + eax], 0x7d
je 0x46ce12
add dword [esp + 0x4c], 1
jmp 0x46c373
cmp byte [eax + 6], 0x5c
jne 0x46c5da
cmp byte [eax + 7], 0x75
jne 0x46c5da
movzx edi, byte [eax + 9]
movzx esi, byte [eax + 8]
mov esi, dword [esi*4 + 0x5831f8]
or esi, dword [edi*4 + 0x582eb0]
movzx edi, byte [eax + 0xb]
or esi, dword [edi*4 + 0x582820]
movzx edi, byte [eax + 0xa]
or esi, dword [edi*4 + 0x582b68]
or ecx, esi
shr ecx, 0x10
jne 0x46c5da
shl ebx, 0xa
sub esi, 0xdc00
add eax, 0xc
or ebx, esi
lea ecx, [ebx + 0x10000]
jmp 0x46ca91
mov eax, dword [ebx + 4]
cmp byte [edi + eax], 0x5d
je 0x46cfd8
add dword [esp + 0x4c], 1
mov dword [esp + 0x58], edx
jmp 0x46c473
mov edi, dword [esp + 0x6c]
mov edi, dword [edi + 0x24]
mov edx, edi
mov dword [esp + 0x60], edi
sub edx, esi
cmp edx, 4
jbe 0x46cd00
mov edx, dword [ecx]
movzx ecx, byte [ecx + 4]
movzx ecx, byte [ecx + 0x582620]
xor edx, 0x6c6c756e
or ecx, edx
sete dl
test dl, dl
je 0x46cc5f
mov edi, dword [esp + 0x68]
mov ecx, 1
mov dword [edi + 8], 0
add edi, 0x10
mov dword [edi - 4], 0x6e000000
mov dword [esp + 0x60], edi
jmp 0x46c6d4
lea esp, [ebp - 0xc]
mov eax, 8
pop ebx
pop esi
pop edi
pop ebp
ret 4
mov byte [edx], cl
add edx, 1
jmp 0x46c40e
mov ebx, dword [esp + 0x68]
mov eax, edx
sub eax, ebx
mov edi, dword [esp + 0x50]
mov dword [edi], eax
mov byte [edx], 0
jmp 0x46c9fe
cmp cl, 0x31
jne 0x46ccb0
cmp dword [esp + 0x54], 0
js 0x46d5b6
lea esi, cs:[esi]
nop
mov eax, dword [esp + 0x4c]
mov dword [esp], eax
call fcn.0054fb20
mov eax, 9
jmp 0x46c5ad
jne 0x46ca3f
cmp dword [ecx + 1], 0x65736c61
sete dl
jmp 0x46c779
je 0x46d2b7
mov eax, 6
jmp 0x46c5ad
jne 0x46cc5f
cmp dword [ecx], 0x6c6c756e
sete dl
jmp 0x46cc38
mov byte [edx], cl
add edx, 1
jmp 0x46c30e
cmp al, 0x6e
je 0x46d351
cmp al, 0x74
jne 0x46c5a8
mov eax, dword [esp + 0x40]
mov ebx, dword [eax]
movzx eax, byte [eax + 4]
mov edx, ebx
movzx eax, byte [eax + 0x582620]
mov dword [esp + 0x58], ebx
xor edx, 0x65757274
or eax, edx
jne 0x46ccee
mov eax, dword [esp + 0x60]
mov dword [eax], 0
add eax, 8
mov dword [eax - 4], 0x74000000
mov dword [esp + 0x60], eax
lea esi, [esi]
mov eax, dword [esp + 0x68]
lea ebx, [eax + 4]
mov eax, dword [eax]
mov dword [esp + 0x58], ebx
movzx eax, byte [edi + eax]
cmp al, 0x2c
je 0x46cec0
cmp al, 0x5d
jne 0x46c5a8
mov edx, dword [esp + 0x6c]
mov ebx, dword [esp + 0x4c]
mov eax, dword [edx + 0x18]
mov edx, dword [edx + 0x28]
lea eax, [eax + ebx*8]
mov ebx, dword [esp + 0x60]
mov esi, dword [edx]
mov edx, 0xffffff
mov ecx, dword [eax]
mov eax, dword [eax + 4]
mov dword [ebx + 4], 0x5d000000
add ebx, 8
mov dword [ebx - 8], ecx
cmp eax, edx
cmova eax, edx
mov dword [esp + 0x60], ebx
sub ebx, esi
mov edx, ebx
mov dword [esp + 0x68], esi
sar edx, 3
xchg edx, eax
or edx, 0x5b000000
mov dword [esi + ecx*8], eax
mov dword [esi + ecx*8 + 4], edx
sub dword [esp + 0x4c], 1
mov eax, dword [esp + 0x6c]
mov ebx, dword [esp + 0x4c]
je 0x46ca0d
mov eax, dword [eax + 0x1c]
cmp byte [eax + ebx], 0
je 0x46ce4b
mov eax, dword [esp + 0x58]
mov dword [esp + 0x68], eax
jmp 0x46cd78
lea eax, [ecx + 0xc]
mov ebx, dword [esp + 0x60]
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x6c]
mov ecx, ebx
add ebx, 0x10
mov eax, dword [eax + 0x28]
sub ecx, dword [eax]
mov dword [ebx - 0xc], 0x7b000000
mov eax, ecx
mov dword [ebx - 4], 0x7d000000
sar eax, 3
lea edx, [eax + 2]
mov dword [ebx - 8], eax
mov dword [ebx - 0x10], edx
mov dword [esp + 0x60], ebx
mov eax, dword [esp + 0x58]
mov eax, dword [eax]
movzx eax, byte [edi + eax]
cmp al, 0x2c
je 0x46d948
cmp al, 0x7d
jne 0x46c5a8
mov edx, dword [esp + 0x6c]
mov ebx, dword [esp + 0x4c]
add dword [esp + 0x58], 4
mov eax, dword [edx + 0x18]
mov edx, dword [edx + 0x28]
lea eax, [eax + ebx*8]
mov esi, dword [edx]
mov ebx, dword [esp + 0x60]
mov ecx, dword [eax]
mov edx, dword [eax + 4]
mov eax, 0xffffff
mov dword [ebx + 4], 0x7d000000
add ebx, 8
mov dword [ebx - 8], ecx
cmp edx, eax
cmova edx, eax
mov eax, ebx
mov dword [esp + 0x60], ebx
sub eax, esi
mov dword [esp + 0x68], esi
sar eax, 3
or edx, 0x7b000000
mov dword [esi + ecx*8], eax
mov dword [esi + ecx*8 + 4], edx
jmp 0x46cde9
mov eax, dword [esp + 0x6c]
mov ebx, dword [esp + 0x4c]
mov eax, dword [eax + 0x18]
add dword [eax + ebx*8 + 4], 1
jmp 0x46c4b7
movzx ebx, byte [eax + 3]
movzx edx, byte [eax + 2]
mov edx, dword [edx*4 + 0x5831f8]
or edx, dword [ebx*4 + 0x582eb0]
movzx ebx, byte [eax + 5]
or edx, dword [ebx*4 + 0x582820]
movzx ebx, byte [eax + 4]
or edx, dword [ebx*4 + 0x582b68]
lea ebx, [edx - 0xd800]
cmp ebx, 0x3ff
jbe 0x46d2c5
add eax, 6
cmp edx, 0x7f
jbe 0x46d5ac
cmp edx, 0x7ff
jbe 0x46db08
cmp edx, 0xffff
jbe 0x46dbac
cmp edx, 0x10ffff
ja 0x46c5da
movd xmm0, dword [0x58f9d0]
mov ebx, edx
mov esi, edx
add ecx, 4
shr ebx, 0x12
shr esi, 0xc
mov edi, ebx
mov ebx, edx
and edx, 0x3f
and esi, 0x3f
shr ebx, 6
shl edx, 8
and ebx, 0x3f
or edx, ebx
mov ebx, edi
shl edx, 8
movzx ebx, bl
or edx, esi
shl edx, 8
or edx, ebx
movd xmm5, edx
paddb xmm5, xmm0
movd dword [ecx - 4], xmm5
jmp 0x46c556
mov eax, ebx
mov ebx, dword [esp + 0x60]
add eax, 8
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0x6c]
mov ecx, ebx
add ebx, 0x10
mov eax, dword [eax + 0x28]
sub ecx, dword [eax]
mov dword [ebx - 0xc], 0x7b000000
mov eax, ecx
mov dword [ebx - 4], 0x7d000000
sar eax, 3
lea edx, [eax + 2]
mov dword [ebx - 8], eax
mov dword [ebx - 0x10], edx
mov dword [esp + 0x60], ebx
jmp 0x46cd78
mov eax, ebx
mov ebx, dword [esp + 0x60]
add eax, 8
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0x6c]
mov ecx, ebx
add ebx, 0x10
mov eax, dword [eax + 0x28]
sub ecx, dword [eax]
mov dword [ebx - 0xc], 0x5b000000
mov eax, ecx
mov dword [ebx - 4], 0x5d000000
sar eax, 3
lea edx, [eax + 2]
mov dword [ebx - 8], eax
mov dword [ebx - 0x10], edx
mov dword [esp + 0x60], ebx
jmp 0x46cd78
mov esi, dword [edi + 1]
lea eax, [ebx + 2]
mov edi, dword [edi + 5]
mov dword [esp + 0x48], eax
mov eax, esi
mov edx, edi
mov dword [esp + 0x30], esi
add eax, 0x6060606
mov dword [esp + 0x34], edi
adc edx, 0x6060606
and esi, 0xf0f0f0f0
and edi, 0xf0f0f0f0
shrd eax, edx, 4
shr edx, 4
and eax, 0xf0f0f0f
and edx, 0xf0f0f0f
or eax, esi
or edx, edi
xor eax, 0x33333333
xor edx, 0x33333333
or eax, edx
je 0x46d608
movzx ecx, byte [ebx + 2]
sub ecx, 0x30
cmp cl, 9
ja 0x46ccb0
mov esi, dword [esp + 0x48]
mov eax, dword [esp + 0x50]
mov edx, dword [esp + 0x54]
movzx ecx, cl
lea edi, [esi + 1]
shld edx, eax, 2
shl eax, 2
add eax, dword [esp + 0x50]
adc edx, dword [esp + 0x54]
shld edx, eax, 1
add eax, eax
add eax, ecx
adc edx, 0
mov dword [esp + 0x50], eax
mov dword [esp + 0x54], edx
movzx edx, byte [esi + 1]
lea ecx, [edx - 0x30]
cmp cl, 9
ja 0x46d104
mov ebx, edi
mov esi, dword [esp + 0x50]
mov edi, dword [esp + 0x54]
mov eax, esi
mov edx, edi
movzx ecx, cl
shld edx, eax, 2
shl eax, 2
add eax, esi
adc edx, edi
shld edx, eax, 1
add eax, eax
add eax, ecx
adc edx, 0
add ebx, 1
mov esi, eax
mov edi, edx
movzx edx, byte [ebx]
lea ecx, [edx - 0x30]
cmp cl, 9
jbe 0x46d0cb
mov dword [esp + 0x50], eax
mov dword [esp + 0x54], edi
mov edi, ebx
mov eax, dword [esp + 0x48]
sub eax, edi
mov dword [esp + 0x30], eax
sar eax, 0x1f
mov ebx, dword [esp + 0x30]
mov dword [esp + 0x34], eax
mov esi, dword [esp + 0x34]
mov eax, ebx
or eax, esi
je 0x46ccb0
mov ebx, dword [esp + 0x40]
mov eax, edi
sub eax, ebx
mov dword [esp + 0x48], eax
mov eax, edx
and eax, 0xffffffdf
cmp al, 0x45
jne 0x46d1ed
movzx ebx, byte [edi + 1]
lea eax, [ebx - 0x2b]
mov byte [esp + 0x20], bl
test al, 0xfd
jne 0x46d527
lea esi, [edi + 2]
movzx edi, byte [edi + 2]
lea ecx, [edi - 0x30]
cmp cl, 9
ja 0x46ccb0
mov eax, edi
mov dword [esp + 0x18], esi
mov ebx, esi
xor edi, edi
mov byte [esp + 0x3b], al
xor esi, esi
mov eax, esi
mov edx, edi
movzx ecx, cl
shld edx, eax, 2
shl eax, 2
add eax, esi
adc edx, edi
shld edx, eax, 1
add eax, eax
add eax, ecx
adc edx, 0
add ebx, 1
mov esi, eax
mov edi, edx
movzx edx, byte [ebx]
lea ecx, [edx - 0x30]
cmp cl, 9
jbe 0x46d176
mov dword [esp + 0x28], esi
mov esi, dword [esp + 0x18]
mov dword [esp + 0x2c], edi
movzx edi, byte [esp + 0x3b]
cmp esi, ebx
je 0x46ccb0
lea eax, [esi + 0x12]
cmp eax, ebx
jb 0x46db24
cmp byte [esp + 0x20], 0x2d
jne 0x46d1dd
neg dword [esp + 0x28]
adc dword [esp + 0x2c], 0
neg dword [esp + 0x2c]
mov ecx, dword [esp + 0x28]
mov ebx, dword [esp + 0x2c]
add dword [esp + 0x30], ecx
adc dword [esp + 0x34], ebx
movzx eax, dl
cmp dword [esp + 0x48], 0x13
movzx ebx, byte [eax + 0x582620]
ja 0x46db54
mov esi, dword [esp + 0x30]
mov edi, dword [esp + 0x34]
mov ecx, 0x28a
mov eax, esi
mov edx, edi
add eax, 0x156
adc edx, 0
mov dword [esp + 0x60], eax
mov dword [esp + 0x64], edx
mov edx, eax
xor eax, eax
cmp ecx, edx
sbb eax, dword [esp + 0x64]
jae 0x46d5db
cmp esi, 0xfffffeaa
mov eax, edi
sbb eax, 0xffffffff
jl 0x46d252
mov esi, dword [esp + 0x50]
mov edi, dword [esp + 0x54]
mov eax, esi
or eax, edi
jne 0x46ccb0
mov eax, dword [esp + 0x68]
xor edx, edx
add eax, 0x18
mov dword [esp + 0x60], eax
xor eax, eax
mov edi, dword [esp + 0x68]
mov dword [edi + 8], 0
mov dword [edi + 0xc], 0x64000000
mov dword [edi + 0x10], eax
mov dword [edi + 0x14], edx
mov eax, dword [esp + 0x4c]
mov dword [esp], eax
test bl, bl
je 0x46c9f9
jmp 0x46ccb7
mov ebx, ecx
add edx, 3
shr ebx, 0xc
sub ebx, 0x20
mov byte [edx - 3], bl
mov ebx, ecx
and ecx, 0x3f
shr ebx, 6
add ecx, 0xffffff80
and ebx, 0x3f
mov byte [edx - 1], cl
add ebx, 0xffffff80
mov byte [edx - 2], bl
jmp 0x46c40e
cmp dword [ecx], 0x65757274
sete dl
jmp 0x46c7d8
cmp byte [eax + 6], 0x5c
jne 0x46c5da
cmp byte [eax + 7], 0x75
jne 0x46c5da
movzx edi, byte [eax + 9]
movzx esi, byte [eax + 8]
mov esi, dword [esi*4 + 0x5831f8]
or esi, dword [edi*4 + 0x582eb0]
movzx edi, byte [eax + 0xb]
or esi, dword [edi*4 + 0x582820]
movzx edi, byte [eax + 0xa]
or esi, dword [edi*4 + 0x582b68]
or edx, esi
shr edx, 0x10
jne 0x46c5da
shl ebx, 0xa
sub esi, 0xdc00
add eax, 0xc
mov edx, ebx
or edx, esi
add edx, 0x10000
jmp 0x46cf19
mov eax, 2
jmp 0x46c5ad
mov ebx, ecx
and ecx, 0x3f
add edx, 2
shr ebx, 6
add ecx, 0xffffff80
sub ebx, 0x40
mov byte [edx - 1], cl
mov byte [edx - 2], bl
jmp 0x46c30e
mov eax, dword [esp + 0x40]
mov ebx, dword [eax]
movzx eax, byte [eax + 4]
mov edx, ebx
movzx eax, byte [eax + 0x582620]
mov dword [esp + 0x58], ebx
xor edx, 0x6c6c756e
or eax, edx
jne 0x46cc5f
mov eax, dword [esp + 0x60]
mov dword [eax], 0
add eax, 8
mov dword [eax - 4], 0x6e000000
mov dword [esp + 0x60], eax
jmp 0x46cd78
mov eax, dword [esp + 0x40]
mov ebx, dword [eax + 1]
movzx eax, byte [eax + 5]
mov edx, ebx
movzx eax, byte [eax + 0x582620]
mov dword [esp + 0x58], ebx
xor edx, 0x65736c61
or eax, edx
jne 0x46ca3f
mov eax, dword [esp + 0x60]
mov dword [eax], 0
add eax, 8
mov dword [eax - 4], 0x66000000
mov dword [esp + 0x60], eax
jmp 0x46cd78
mov ebx, ecx
add edx, 3
shr ebx, 0xc
sub ebx, 0x20
mov byte [edx - 3], bl
mov ebx, ecx
and ecx, 0x3f
shr ebx, 6
add ecx, 0xffffff80
and ebx, 0x3f
mov byte [edx - 1], cl
add ebx, 0xffffff80
mov byte [edx - 2], bl
jmp 0x46c30e
lea edx, [eax - 0x30]
cmp dl, 9
ja 0x46c5a8
mov esi, dword [esp + 0x40]
mov byte [esp + 0x28], al
mov byte [esp + 0x18], 0
mov dword [esp + 0x3c], esi
mov dword [esp + 0x58], 0
mov ecx, edi
mov ebx, edx
mov edi, eax
mov dword [esp + 0x5c], 0
mov eax, dword [esp + 0x58]
mov edx, dword [esp + 0x5c]
movzx ebx, bl
shld edx, eax, 2
shl eax, 2
add eax, dword [esp + 0x58]
adc edx, dword [esp + 0x5c]
shld edx, eax, 1
add eax, eax
add eax, ebx
adc edx, 0
mov dword [esp + 0x58], eax
mov dword [esp + 0x5c], edx
mov edx, esi
movzx eax, byte [esi + 1]
add esi, 1
lea ebx, [eax - 0x30]
cmp bl, 9
jbe 0x46d433
mov ebx, eax
mov dword [esp + 0x30], edx
mov edx, dword [esp + 0x3c]
mov eax, edi
mov edi, ecx
mov ecx, ebx
mov ebx, esi
sub ebx, edx
mov dword [esp + 0x48], ebx
je 0x46ccbc
cmp byte [esp + 0x28], 0x30
jne 0x46d4a1
cmp dword [esp + 0x48], 1
jne 0x46ccbc
cmp cl, 0x2e
je 0x46d6c3
and ecx, 0xffffffdf
mov dword [esp + 0x20], 0
mov dword [esp + 0x24], 0
cmp cl, 0x45
je 0x46d7f2
cmp byte [esp + 0x18], 0
jne 0x46dc6e
cmp dword [esp + 0x48], 0x14
ja 0x46ccbc
je 0x46dc98
cmp dword [esp + 0x5c], 0
js 0x46dcab
mov ebx, dword [esp + 0x60]
mov eax, dword [esp + 0x58]
mov edx, dword [esp + 0x5c]
mov dword [ebx + 8], eax
lea ecx, [ebx + 0x10]
xor eax, eax
mov dword [ebx + 0xc], edx
mov edx, 0x6c000000
mov dword [ebx], eax
mov dword [ebx + 4], edx
movzx eax, byte [esi]
cmp byte [eax + 0x582620], 0
jne 0x46ccbc
mov dword [esp + 0x60], ecx
jmp 0x46cd78
lea esi, [edi + 1]
mov edi, ebx
jmp 0x46d15a
mov eax, ecx
mov edi, dword [esp + 0x58]
mov ecx, dword [esp + 0x40]
mov ebx, eax
sub eax, ecx
mov ecx, dword [esp + 0x50]
mov dword [ecx], eax
lea eax, [ebx + 1]
mov byte [ebx], 0
mov dword [esp + 0x50], eax
jmp 0x46cd78
mov ebx, dword [esp + 0x40]
movzx ebx, byte [ebx + 1]
lea edx, [ebx - 0x30]
mov byte [esp + 0x28], bl
cmp dl, 9
ja 0x46ccbc
mov ebx, dword [esp + 0x40]
mov byte [esp + 0x18], 1
lea esi, [ebx + 1]
mov dword [esp + 0x3c], esi
jmp 0x46d41d
cmp dword [esp + 0x48], 0x13
ja 0x46ccb0
je 0x46dbd6
mov eax, dword [esp + 0x54]
test eax, eax
js 0x46d5b6
neg dword [esp + 0x50]
adc dword [esp + 0x54], 0
neg dword [esp + 0x54]
jmp 0x46c9bc
mov byte [ecx], dl
add ecx, 1
jmp 0x46c556
mov ebx, dword [esp + 0x68]
mov eax, dword [esp + 0x50]
mov edx, dword [esp + 0x54]
mov dword [ebx + 0x10], eax
lea eax, [ebx + 0x18]
mov dword [ebx + 0x14], edx
mov edx, 0x75000000
mov dword [esp + 0x60], eax
xor eax, eax
jmp 0x46c9dc
mov eax, dword [esp + 0x4c]
lea edx, [esp + 0x78]
call fcn.0046acf0
test al, al
je 0x46ccb0
mov edi, dword [esp + 0x68]
mov eax, dword [esp + 0x78]
mov edx, dword [esp + 0x7c]
add edi, 0x18
mov dword [esp + 0x60], edi
jmp 0x46d261
mov esi, dword [esp + 0x30]
mov edi, dword [esp + 0x34]
and esi, 0xf0f0f0f
and edi, 0xf0f0f0f
mov eax, esi
mov edx, edi
shl eax, 2
shld edx, esi, 2
add eax, esi
adc edx, edi
shld edx, eax, 9
shl eax, 9
add eax, esi
adc edx, edi
mov edi, 0x640001
shrd eax, edx, 8
shr edx, 8
and edx, 0xff00ff
and eax, 0xff00ff
imul ecx, edx, 0x640001
mul edi
add edx, ecx
shrd eax, edx, 0x10
shr edx, 0x10
and eax, 0xffff
and edx, 0xffff
imul ecx, eax, 0x2710
lea edx, [edx + ecx]
mov eax, edx
imul ecx, dword [esp + 0x54], 0x5f5e100
xor edx, edx
mov esi, eax
mov edi, edx
mov eax, 0x5f5e100
mul dword [esp + 0x50]
add edx, ecx
add eax, esi
lea esi, [ebx + 0xa]
adc edx, edi
mov dword [esp + 0x50], eax
mov dword [esp + 0x54], edx
movzx edx, byte [ebx + 0xa]
lea ecx, [edx - 0x30]
cmp cl, 9
jbe 0x46d085
mov dword [esp + 0x30], 0xfffffff8
mov edi, esi
mov dword [esp + 0x34], 0xffffffff
jmp 0x46d127
mov eax, dword [esp + 0x30]
mov ebx, dword [esi + 1]
mov esi, dword [esi + 5]
add eax, 2
mov dword [esp + 0x20], ebx
mov dword [esp + 0x48], eax
mov eax, ebx
mov edx, esi
add eax, 0x6060606
mov dword [esp + 0x24], esi
adc edx, 0x6060606
and ebx, 0xf0f0f0f0
and esi, 0xf0f0f0f0
shrd eax, edx, 4
shr edx, 4
and eax, 0xf0f0f0f
and edx, 0xf0f0f0f
or eax, ebx
or edx, esi
xor eax, 0x33333333
xor edx, 0x33333333
or eax, edx
je 0x46dcd6
mov eax, dword [esp + 0x30]
movzx eax, byte [eax + 2]
sub eax, 0x30
mov byte [esp + 0x20], al
cmp al, 9
ja 0x46ccbc
mov eax, dword [esp + 0x48]
mov dword [esp + 0x30], eax
mov esi, dword [esp + 0x5c]
mov ebx, dword [esp + 0x58]
mov eax, 0xa
imul ecx, esi, 0xa
mul ebx
add edx, ecx
movzx ecx, byte [esp + 0x20]
add eax, ecx
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x30]
adc edx, 0
mov dword [esp + 0x5c], edx
lea esi, [eax + 1]
movzx eax, byte [eax + 1]
lea ecx, [eax - 0x30]
mov byte [esp + 0x30], al
cmp cl, 9
ja 0x46d7bb
mov eax, dword [esp + 0x58]
mov edx, dword [esp + 0x5c]
movzx ecx, cl
shld edx, eax, 2
shl eax, 2
add eax, dword [esp + 0x58]
adc edx, dword [esp + 0x5c]
shld edx, eax, 1
add eax, eax
add eax, ecx
adc edx, 0
add esi, 1
mov dword [esp + 0x58], eax
mov dword [esp + 0x5c], edx
movzx edx, byte [esi]
lea ecx, [edx - 0x30]
cmp cl, 9
jbe 0x46d77c
mov byte [esp + 0x30], dl
mov eax, dword [esp + 0x48]
sub eax, esi
mov ebx, eax
mov dword [esp + 0x20], eax
sar ebx, 0x1f
or eax, ebx
mov dword [esp + 0x24], ebx
je 0x46ccbc
mov ebx, dword [esp + 0x3c]
mov eax, esi
sub eax, ebx
mov dword [esp + 0x48], eax
movzx eax, byte [esp + 0x30]
and eax, 0xffffffdf
cmp al, 0x45
jne 0x46d8a4
movzx eax, byte [esi + 1]
xor ecx, ecx
mov byte [esp + 0x3b], al
sub eax, 0x2b
test al, 0xfd
sete cl
lea ecx, [esi + ecx + 1]
movzx eax, byte [ecx]
mov byte [esp + 0x3a], al
sub eax, 0x30
cmp al, 9
ja 0x46ccbc
mov dword [esp + 0x14], ecx
xor esi, esi
mov edx, ecx
mov dword [esp + 0x30], edi
xor edi, edi
mov ecx, esi
mov ebx, edi
movzx eax, al
shld ebx, ecx, 2
shl ecx, 2
add ecx, esi
adc ebx, edi
shld ebx, ecx, 1
add ecx, ecx
mov esi, ecx
mov edi, ebx
add esi, eax
adc edi, 0
movzx ecx, byte [edx + 1]
add edx, 1
lea eax, [ecx - 0x30]
cmp al, 9
jbe 0x46d828
mov dword [esp + 0x1c], edi
mov edi, dword [esp + 0x30]
mov ebx, edx
mov byte [esp + 0x30], cl
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x18], esi
cmp ecx, edx
je 0x46ccbc
lea eax, [ecx + 0x12]
cmp eax, edx
jb 0x46ddce
cmp byte [esp + 0x3b], 0x2d
jne 0x46d894
neg dword [esp + 0x18]
adc dword [esp + 0x1c], 0
neg dword [esp + 0x1c]
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
add dword [esp + 0x20], eax
adc dword [esp + 0x24], edx
movzx eax, byte [esp + 0x30]
cmp dword [esp + 0x48], 0x13
movzx ebx, byte [eax + 0x582620]
ja 0x46e084
mov edx, dword [esp + 0x20]
mov ecx, dword [esp + 0x24]
mov eax, 0x28a
add edx, 0x156
adc ecx, 0
cmp eax, edx
mov eax, 0
sbb eax, ecx
jae 0x46dd82
mov edx, dword [esp + 0x20]
mov ecx, dword [esp + 0x24]
cmp edx, 0xfffffeaa
mov eax, ecx
sbb eax, 0xffffffff
jl 0x46d907
mov edx, dword [esp + 0x58]
mov ecx, dword [esp + 0x5c]
mov eax, edx
or eax, ecx
jne 0x46ccbc
mov eax, dword [esp + 0x60]
xor edx, edx
xor ecx, ecx
add eax, 0x10
mov esi, dword [esp + 0x60]
mov dword [esi], 0
mov dword [esi + 4], 0x64000000
mov dword [esi + 8], edx
mov dword [esi + 0xc], ecx
test bl, bl
jne 0x46ccbc
mov dword [esp + 0x60], eax
jmp 0x46cd78
xor eax, eax
jmp 0x46cb1c
xor eax, eax
jmp 0x46cc88
mov ecx, dword [esp + 0x6c]
mov ebx, dword [esp + 0x4c]
mov eax, dword [ecx + 0x18]
add dword [eax + ebx*8 + 4], 1
mov eax, dword [esp + 0x58]
mov ebx, dword [eax + 4]
add ebx, edi
cmp byte [ebx], 0x22
jne 0x46c5a8
mov eax, dword [ecx + 0x28]
mov ecx, dword [esp + 0x50]
mov esi, dword [esp + 0x60]
mov edx, ecx
sub edx, dword [eax + 4]
mov eax, edx
add esi, 8
cdq
mov dword [esi - 8], eax
or edx, 0x22000000
mov dword [esi - 4], edx
movzx eax, byte [ebx + 1]
lea edx, [ecx + 4]
mov dword [esp + 0x60], esi
mov esi, ecx
lea ecx, [ebx + 1]
mov byte [esi + 4], al
cmp al, 0x22
je 0x46e0dc
mov dword [esp + 0x68], edi
mov dword [esp + 0x40], edx
jmp 0x46d9cb
add ecx, 1
add edx, 1
movzx eax, byte [ecx]
mov byte [edx], al
cmp al, 0x22
je 0x46dc44
movzx ebx, byte [ecx + 1]
cmp al, 0x5c
jne 0x46d9b8
cmp bl, 0x75
je 0x46d9f1
movzx eax, byte [ebx + 0x582720]
test al, al
je 0x46c5da
mov byte [edx], al
add ecx, 2
add edx, 1
jmp 0x46d9be
movzx ebx, byte [ecx + 3]
movzx eax, byte [ecx + 2]
mov eax, dword [eax*4 + 0x5831f8]
or eax, dword [ebx*4 + 0x582eb0]
movzx ebx, byte [ecx + 5]
or eax, dword [ebx*4 + 0x582820]
movzx ebx, byte [ecx + 4]
or eax, dword [ebx*4 + 0x582b68]
lea esi, [eax - 0xd800]
cmp esi, 0x3ff
jbe 0x46daa3
add ecx, 6
cmp eax, 0x7f
jbe 0x46dccc
cmp eax, 0x7ff
jbe 0x46ddab
cmp eax, 0xffff
jbe 0x46e004
cmp eax, 0x10ffff
ja 0x46c5da
mov ebx, eax
mov edi, eax
mov esi, eax
and eax, 0x3f
shr ebx, 6
shr esi, 0xc
add edx, 4
movd xmm0, dword [0x58f9d0]
shl eax, 8
and ebx, 0x3f
shr edi, 0x12
or eax, ebx
mov ebx, esi
and ebx, 0x3f
shl eax, 8
or eax, ebx
mov ebx, edi
movzx ebx, bl
shl eax, 8
or eax, ebx
movd xmm4, eax
paddb xmm4, xmm0
movd dword [edx - 4], xmm4
jmp 0x46d9be
cmp byte [ecx + 6], 0x5c
jne 0x46c5da
cmp byte [ecx + 7], 0x75
jne 0x46c5da
movzx edi, byte [ecx + 9]
movzx ebx, byte [ecx + 8]
mov ebx, dword [ebx*4 + 0x5831f8]
or ebx, dword [edi*4 + 0x582eb0]
movzx edi, byte [ecx + 0xb]
or ebx, dword [edi*4 + 0x582820]
movzx edi, byte [ecx + 0xa]
or ebx, dword [edi*4 + 0x582b68]
or eax, ebx
shr eax, 0x10
jne 0x46c5da
mov eax, esi
sub ebx, 0xdc00
add ecx, 0xc
shl eax, 0xa
or eax, ebx
add eax, 0x10000
jmp 0x46da2e
mov ebx, edx
and edx, 0x3f
add ecx, 2
shr ebx, 6
add edx, 0xffffff80
sub ebx, 0x40
mov byte [ecx - 1], dl
mov byte [ecx - 2], bl
jmp 0x46c556
mov eax, edi
cmp al, 0x30
jne 0x46db3f
mov eax, esi
add esi, 1
cmp byte [esi], 0x30
je 0x46db2a
add eax, 0x13
cmp eax, ebx
jae 0x46d1c9
mov dword [esp + 0x28], 0xa763ffff
mov dword [esp + 0x2c], 0xde0b6b3
jmp 0x46d1c9
movzx eax, byte [esp + 0x3c]
sub eax, 0x2e
test al, 0xfd
jne 0x46db87
mov edx, dword [esp + 0x40]
movzx eax, byte [edx + 1]
add edx, 1
sub eax, 0x2e
test al, 0xfd
je 0x46db64
mov eax, dword [esp + 0x40]
sub edx, eax
mov eax, dword [esp + 0x48]
sub eax, edx
cmp eax, 0x13
jbe 0x46d202
mov edx, dword [esp + 0x60]
mov eax, dword [esp + 0x4c]
call fcn.0046ad80
test eax, eax
jne 0x46e22d
mov eax, dword [esp + 0x68]
add eax, 0x18
mov dword [esp + 0x60], eax
jmp 0x46d279
mov ebx, edx
add ecx, 3
shr ebx, 0xc
sub ebx, 0x20
mov byte [ecx - 3], bl
mov ebx, edx
and edx, 0x3f
shr ebx, 6
add edx, 0xffffff80
and ebx, 0x3f
mov byte [ecx - 1], dl
add ebx, 0xffffff80
mov byte [ecx - 2], bl
jmp 0x46c556
mov ebx, dword [esp + 0x50]
xor eax, eax
mov esi, dword [esp + 0x54]
cmp eax, ebx
mov eax, 0x80000000
sbb eax, esi
jb 0x46ccb0
mov ecx, dword [esp + 0x68]
xor eax, eax
xor edx, edx
mov dword [ecx + 8], eax
mov eax, ebx
neg eax
mov dword [ecx + 0xc], 0x6c000000
sbb edx, esi
mov dword [ecx + 0x10], eax
mov dword [ecx + 0x14], edx
movzx eax, byte [edi]
cmp byte [eax + 0x582620], 0
jne 0x46ccb0
mov eax, dword [esp + 0x4c]
add ecx, 0x18
mov dword [esp + 0x60], ecx
mov dword [esp], eax
call fcn.0054fb20
mov edi, dword [esp + 0x6c]
mov eax, dword [edi + 0x28]
mov eax, dword [eax]
mov dword [esp + 0x68], eax
mov eax, edi
jmp 0x46ca0d
mov eax, edx
mov edi, dword [esp + 0x68]
mov edx, dword [esp + 0x40]
mov ebx, eax
sub eax, edx
mov edx, dword [esp + 0x50]
mov ecx, dword [esp + 0x58]
mov dword [edx], eax
lea eax, [ebx + 1]
add ecx, 8
mov byte [ebx], 0
mov dword [esp + 0x50], eax
jmp 0x46cb33
cmp dword [esp + 0x48], 0x13
ja 0x46ccbc
je 0x46e02e
cmp dword [esp + 0x5c], 0
js 0x46dcab
neg dword [esp + 0x58]
adc dword [esp + 0x5c], 0
neg dword [esp + 0x5c]
jmp 0x46d4ed
cmp al, 0x31
jne 0x46ccbc
cmp dword [esp + 0x5c], 0
jns 0x46ccbc
mov ebx, dword [esp + 0x60]
mov eax, dword [esp + 0x58]
mov edx, dword [esp + 0x5c]
mov dword [ebx + 8], eax
lea ecx, [ebx + 0x10]
xor eax, eax
mov dword [ebx + 0xc], edx
mov edx, 0x75000000
jmp 0x46d509
mov byte [edx], al
add edx, 1
jmp 0x46d9be
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x24]
mov ebx, 0xa01
and edx, 0xf0f0f0f
and eax, 0xf0f0f0f
imul ecx, edx, 0xa01
mul ebx
mov ebx, 0x640001
add edx, ecx
shrd eax, edx, 8
shr edx, 8
and edx, 0xff00ff
and eax, 0xff00ff
imul ecx, edx, 0x640001
mul ebx
add edx, ecx
shrd eax, edx, 0x10
shr edx, 0x10
and eax, 0xffff
and edx, 0xffff
imul ecx, eax, 0x2710
lea edx, [edx + ecx]
mov eax, edx
imul ecx, dword [esp + 0x5c], 0x5f5e100
xor edx, edx
mov esi, edx
mov ebx, eax
mov eax, 0x5f5e100
mul dword [esp + 0x58]
add edx, ecx
add eax, ebx
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x30]
adc edx, esi
mov dword [esp + 0x5c], edx
lea esi, [eax + 0xa]
movzx eax, byte [eax + 0xa]
mov byte [esp + 0x30], al
sub eax, 0x30
mov byte [esp + 0x20], al
cmp al, 9
ja 0x46d7bb
mov dword [esp + 0x30], esi
jmp 0x46d73f
mov eax, dword [esp + 0x40]
lea edx, [esp + 0x78]
call fcn.0046acf0
test al, al
je 0x46ccbc
mov eax, dword [esp + 0x60]
mov edx, dword [esp + 0x78]
mov ecx, dword [esp + 0x7c]
add eax, 0x10
jmp 0x46d912
mov ebx, eax
and eax, 0x3f
add edx, 2
shr ebx, 6
add eax, 0xffffff80
sub ebx, 0x40
mov byte [edx - 1], al
mov byte [edx - 2], bl
jmp 0x46d9be
mov eax, ecx
jmp 0x46d53b
cmp byte [esp + 0x3a], 0x30
jne 0x46ddf3
movzx edx, byte [esp + 0x30]
mov eax, ecx
add ecx, 1
cmp byte [ecx], 0x30
je 0x46ddda
add eax, 0x13
mov byte [esp + 0x30], dl
cmp eax, ebx
jae 0x46d880
mov dword [esp + 0x18], 0xa763ffff
mov dword [esp + 0x1c], 0xde0b6b3
jmp 0x46d880
cmp bl, 0x66
je 0x46e283
ja 0x46dfb5
cmp bl, 0x2d
je 0x46e0ee
ja 0x46e0e3
cmp bl, 0x22
jne 0x46c5a8
mov eax, dword [esp + 0x6c]
mov ebx, dword [esp + 0x50]
mov dword [esp + 0x68], edi
mov eax, dword [eax + 0x28]
mov ecx, ebx
add ebx, 4
mov dword [esp + 0x40], ebx
sub ecx, dword [eax + 4]
mov eax, ecx
mov ecx, dword [esp + 0x60]
cdq
mov dword [ecx], eax
or edx, 0x22000000
mov eax, dword [esp + 0x48]
add ecx, 8
mov dword [ecx - 4], edx
add eax, 1
mov dword [esp + 0x60], ecx
mov ecx, ebx
movzx esi, byte [eax]
mov edx, esi
mov byte [ecx], dl
cmp dl, 0x22
je 0x46e150
mov ebx, esi
movzx edx, byte [eax + 1]
cmp bl, 0x5c
je 0x46dea2
add eax, 1
add ecx, 1
jmp 0x46de6c
mov eax, dword [ecx + 8]
cmp byte [edi + eax], 0x5d
je 0x46dec0
add dword [esp + 0x4c], 1
jmp 0x46c473
cmp dl, 0x75
je 0x46defe
movzx edx, byte [edx + 0x582720]
test dl, dl
je 0x46c5da
mov byte [ecx], dl
add eax, 2
add ecx, 1
jmp 0x46de6c
lea eax, [ecx + 0xc]
mov ebx, dword [esp + 0x60]
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x6c]
mov ecx, ebx
add ebx, 0x10
mov eax, dword [eax + 0x28]
sub ecx, dword [eax]
mov dword [ebx - 0xc], 0x5b000000
mov eax, ecx
mov dword [ebx - 4], 0x5d000000
sar eax, 3
lea edx, [eax + 2]
mov dword [ebx - 8], eax
mov dword [ebx - 0x10], edx
mov dword [esp + 0x60], ebx
jmp 0x46ce4b
movzx esi, byte [eax + 3]
movzx edx, byte [eax + 2]
mov edx, dword [edx*4 + 0x5831f8]
or edx, dword [esi*4 + 0x582eb0]
movzx esi, byte [eax + 5]
or edx, dword [esi*4 + 0x582820]
movzx esi, byte [eax + 4]
or edx, dword [esi*4 + 0x582b68]
lea edi, [edx - 0xd800]
mov ebx, edi
cmp edi, 0x3ff
jbe 0x46e1c7
add eax, 6
cmp edx, 0x7f
jbe 0x46e1bd
cmp edx, 0x7ff
jbe 0x46e19f
cmp edx, 0xffff
jbe 0x46e171
cmp edx, 0x10ffff
ja 0x46c5da
mov esi, edx
mov ebx, edx
mov edi, edx
and edx, 0x3f
shr esi, 6
shl edx, 8
add ecx, 4
movd xmm0, dword [0x58f9d0]
shr edi, 0xc
and esi, 0x3f
shr ebx, 0x12
or edx, esi
and edi, 0x3f
movzx esi, bl
shl edx, 8
or edx, edi
shl edx, 8
or edx, esi
movd xmm3, edx
paddb xmm3, xmm0
movd dword [ecx - 4], xmm3
jmp 0x46de6c
cmp bl, 0x6e
je 0x46e246
cmp bl, 0x74
jne 0x46c5a8
mov ebx, dword [esp + 0x48]
movzx edx, byte [ebx + 4]
mov eax, dword [ebx]
movzx edx, byte [edx + 0x582620]
mov dword [esp + 0x68], eax
xor eax, 0x65757274
or edx, eax
jne 0x46ccee
mov eax, dword [esp + 0x60]
xor ebx, ebx
mov dword [eax], ebx
add eax, 8
mov dword [eax - 4], 0x74000000
mov dword [esp + 0x60], eax
jmp 0x46ce4b
mov ebx, eax
add edx, 3
shr ebx, 0xc
sub ebx, 0x20
mov byte [edx - 3], bl
mov ebx, eax
and eax, 0x3f
shr ebx, 6
add eax, 0xffffff80
and ebx, 0x3f
mov byte [edx - 1], al
add ebx, 0xffffff80
mov byte [edx - 2], bl
jmp 0x46d9be
mov ecx, dword [esp + 0x58]
xor eax, eax
mov ebx, dword [esp + 0x5c]
cmp eax, ecx
mov eax, 0x80000000
sbb eax, ebx
jb 0x46ccbc
mov eax, dword [esp + 0x60]
xor edx, edx
mov dword [eax], edx
xor edx, edx
mov dword [eax + 4], 0x6c000000
mov eax, ecx
neg eax
sbb edx, ebx
mov ebx, dword [esp + 0x60]
mov dword [ebx + 8], eax
mov dword [ebx + 0xc], edx
movzx eax, byte [esi]
cmp byte [eax + 0x582620], 0
jne 0x46ccbc
add ebx, 0x10
mov dword [esp + 0x60], ebx
jmp 0x46cd78
movzx eax, byte [esp + 0x28]
sub eax, 0x2e
test al, 0xfd
jne 0x46e0bb
mov eax, dword [esp + 0x3c]
movzx ecx, byte [eax + 1]
add eax, 1
lea edx, [ecx - 0x2e]
and edx, 0xfd
je 0x46e094
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp + 0x48]
sub eax, ecx
sub edx, eax
cmp edx, 0x13
jbe 0x46d8bb
mov edx, dword [esp + 0x60]
mov eax, dword [esp + 0x40]
call fcn.0046ad80
test eax, eax
jne 0x46c5ad
mov eax, dword [esp + 0x60]
add eax, 0x10
jmp 0x46d929
mov eax, edx
jmp 0x46dc4e
lea eax, [ebx - 0x30]
cmp al, 9
ja 0x46c5a8
xor eax, eax
mov ecx, dword [esp + 0x48]
cmp bl, 0x2d
mov byte [esp + 0x30], bl
sete al
xor esi, esi
add eax, ecx
mov dword [esp + 0x40], esi
mov dword [esp + 0x3c], eax
mov dword [esp + 0x68], eax
mov dword [esp + 0x44], esi
mov eax, dword [esp + 0x68]
movzx eax, byte [eax]
lea ecx, [eax - 0x30]
cmp cl, 9
ja 0x46e2c1
mov edx, dword [esp + 0x44]
mov eax, dword [esp + 0x40]
mov ebx, 0xa
movzx ecx, cl
imul esi, edx, 0xa
mul ebx
add edx, esi
add eax, ecx
adc edx, 0
mov dword [esp + 0x40], eax
add dword [esp + 0x68], 1
mov dword [esp + 0x44], edx
jmp 0x46e112
mov ebx, dword [esp + 0x40]
mov eax, ecx
mov edi, dword [esp + 0x68]
sub eax, ebx
mov ebx, dword [esp + 0x50]
mov dword [ebx], eax
lea eax, [ecx + 1]
mov byte [ecx], 0
mov dword [esp + 0x50], eax
jmp 0x46ce4b
mov esi, edx
add ecx, 3
shr esi, 0xc
sub esi, 0x20
mov ebx, esi
mov esi, edx
and edx, 0x3f
shr esi, 6
mov byte [ecx - 3], bl
add edx, 0xffffff80
and esi, 0x3f
mov byte [ecx - 1], dl
add esi, 0xffffff80
mov ebx, esi
mov byte [ecx - 2], bl
jmp 0x46de6c
mov esi, edx
and edx, 0x3f
add ecx, 2
shr esi, 6
add edx, 0xffffff80
sub esi, 0x40
mov byte [ecx - 1], dl
mov ebx, esi
mov byte [ecx - 2], bl
jmp 0x46de6c
mov byte [ecx], dl
add ecx, 1
jmp 0x46de6c
cmp byte [eax + 6], 0x5c
jne 0x46c5da
cmp byte [eax + 7], 0x75
jne 0x46c5da
movzx edi, byte [eax + 9]
movzx esi, byte [eax + 8]
mov esi, dword [esi*4 + 0x5831f8]
or esi, dword [edi*4 + 0x582eb0]
movzx edi, byte [eax + 0xb]
or esi, dword [edi*4 + 0x582820]
movzx edi, byte [eax + 0xa]
or esi, dword [edi*4 + 0x582b68]
or edx, esi
shr edx, 0x10
jne 0x46c5da
mov edx, ebx
sub esi, 0xdc00
add eax, 0xc
shl edx, 0xa
or edx, esi
add edx, 0x10000
jmp 0x46df41
mov dword [esp + 0x6c], eax
mov eax, dword [esp + 0x4c]
mov dword [esp], eax
call fcn.0054fb20
mov eax, dword [esp + 0x6c]
jmp 0x46c5ad
mov ebx, dword [esp + 0x48]
movzx edx, byte [ebx + 4]
mov eax, dword [ebx]
movzx edx, byte [edx + 0x582620]
mov dword [esp + 0x68], eax
xor eax, 0x6c6c756e
or edx, eax
jne 0x46cc5f
mov eax, dword [esp + 0x60]
xor edx, edx
mov dword [eax], edx
add eax, 8
mov dword [eax - 4], 0x6e000000
mov dword [esp + 0x60], eax
jmp 0x46ce4b
mov ebx, dword [esp + 0x48]
movzx edx, byte [ebx + 5]
mov eax, dword [ebx + 1]
movzx edx, byte [edx + 0x582620]
mov dword [esp + 0x68], eax
xor eax, 0x65736c61
or edx, eax
jne 0x46ca3f
mov eax, dword [esp + 0x60]
xor ecx, ecx
mov dword [eax], ecx
add eax, 8
mov dword [eax - 4], 0x66000000
mov dword [esp + 0x60], eax
jmp 0x46ce4b
mov ecx, dword [esp + 0x68]
mov edx, dword [esp + 0x3c]
movzx ebx, byte [esp + 0x30]
sub ecx, edx
mov dword [esp + 0x30], ecx
je 0x46ccbc
mov ecx, dword [esp + 0x3c]
cmp byte [ecx], 0x30
jne 0x46e2ee
cmp dword [esp + 0x30], 1
jne 0x46ccbc
cmp al, 0x2e
mov eax, dword [esp + 0x68]
je 0x46e414
movzx eax, byte [eax]
mov byte [esp + 0x28], al
and eax, 0xffffffdf
cmp al, 0x45
je 0x46e3ab
xor eax, eax
cmp bl, 0x2d
mov ecx, dword [esp + 0x30]
setne al
add eax, 0x13
cmp eax, ecx
jb 0x46ccbc
cmp ecx, eax
je 0x46e37d
cmp dword [esp + 0x44], 0
js 0x46e39a
cmp bl, 0x2d
jne 0x46e340
neg dword [esp + 0x40]
adc dword [esp + 0x44], 0
neg dword [esp + 0x44]
mov ebx, dword [esp + 0x60]
xor eax, eax
mov dword [ebx], eax
mov dword [ebx + 4], 0x6c000000
mov eax, dword [esp + 0x40]
mov edx, dword [esp + 0x44]
add ebx, 0x10
mov dword [ebx - 8], eax
mov dword [ebx - 4], edx
mov eax, dword [esp + 0x68]
mov dword [esp + 0x60], ebx
movzx eax, byte [eax]
cmp byte [eax + 0x582620], 0
je 0x46ce4b
jmp 0x46ccbc
cmp bl, 0x2d
je 0x46e6cf
cmp bl, 0x31
jne 0x46ccbc
cmp dword [esp + 0x44], 0
jns 0x46ccbc
mov ebx, dword [esp + 0x60]
xor edx, edx
mov dword [ebx], edx
mov dword [ebx + 4], 0x75000000
jmp 0x46e34f
xor eax, eax
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], eax
mov ebx, dword [esp + 0x68]
xor ecx, ecx
movzx eax, byte [ebx + 1]
mov esi, eax
sub eax, 0x2b
test al, 0xfd
sete cl
xor eax, eax
xor edx, edx
add ecx, ebx
add ecx, 1
mov dword [esp + 0x68], ecx
mov dword [esp + 0x18], ecx
mov ebx, dword [esp + 0x68]
movzx ebx, byte [ebx]
mov byte [esp + 0x20], bl
sub ebx, 0x30
cmp bl, 9
ja 0x46e727
imul ecx, edx, 0xa
movzx ebx, bl
mov dword [esp + 0x20], ecx
mov ecx, 0xa
mul ecx
mov ecx, dword [esp + 0x20]
add edx, ecx
add eax, ebx
adc edx, 0
add dword [esp + 0x68], 1
jmp 0x46e3da
lea ebx, [eax + 1]
mov esi, dword [eax + 5]
mov dword [esp + 0x30], ebx
mov ebx, dword [eax + 1]
mov edx, esi
mov dword [esp + 0x2c], esi
mov eax, ebx
mov dword [esp + 0x28], ebx
add eax, 0x6060606
adc edx, 0x6060606
and esi, 0xf0f0f0f0
and ebx, 0xf0f0f0f0
shrd eax, edx, 4
shr edx, 4
and edx, 0xf0f0f0f
and eax, 0xf0f0f0f
or edx, esi
or eax, ebx
cmp edx, 0x33333333
je 0x46e4f3
mov eax, dword [esp + 0x30]
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0x68]
movzx eax, byte [eax]
mov ebx, eax
mov byte [esp + 0x28], al
lea esi, [ebx - 0x30]
mov eax, esi
cmp al, 9
ja 0x46e4af
mov eax, 0xa
mul dword [esp + 0x40]
imul ebx, dword [esp + 0x44], 0xa
mov ecx, edx
mov edx, eax
mov eax, esi
movzx eax, al
add ecx, ebx
add edx, eax
adc ecx, 0
add dword [esp + 0x68], 1
mov dword [esp + 0x40], edx
mov dword [esp + 0x44], ecx
mov esi, 0xa
mov eax, dword [esp + 0x68]
movzx eax, byte [eax]
mov ebx, eax
mov byte [esp + 0x28], al
lea ecx, [ebx - 0x30]
cmp cl, 9
ja 0x46e58d
mov edx, dword [esp + 0x44]
mov eax, dword [esp + 0x40]
movzx ecx, cl
imul ebx, edx, 0xa
mul esi
add edx, ebx
add eax, ecx
adc edx, 0
mov dword [esp + 0x40], eax
add dword [esp + 0x68], 1
mov dword [esp + 0x44], edx
jmp 0x46e4b4
cmp eax, 0x33333333
jne 0x46e466
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x2c]
mov ebx, 0xa01
and edx, 0xf0f0f0f
and eax, 0xf0f0f0f
imul ecx, edx, 0xa01
mul ebx
mov ebx, 0x640001
add edx, ecx
shrd eax, edx, 8
shr edx, 8
and edx, 0xff00ff
and eax, 0xff00ff
imul ecx, edx, 0x640001
mul ebx
add edx, ecx
shrd eax, edx, 0x10
shr edx, 0x10
and eax, 0xffff
and edx, 0xffff
imul ecx, eax, 0x2710
lea edx, [edx + ecx]
mov eax, edx
imul ecx, dword [esp + 0x44], 0x5f5e100
xor edx, edx
mov ebx, eax
mov esi, edx
mov eax, 0x5f5e100
mul dword [esp + 0x40]
add edx, ecx
add ebx, eax
adc esi, edx
mov dword [esp + 0x40], ebx
add dword [esp + 0x68], 9
mov dword [esp + 0x44], esi
jmp 0x46e46e
mov eax, dword [esp + 0x30]
mov ebx, dword [esp + 0x68]
sub eax, ebx
mov esi, eax
mov dword [esp + 0x28], eax
sar esi, 0x1f
mov dword [esp + 0x2c], esi
jne 0x46e5ae
test eax, eax
je 0x46ccbc
mov eax, dword [esp + 0x68]
mov ecx, dword [esp + 0x3c]
mov ebx, eax
movzx eax, byte [eax]
sub ebx, ecx
mov byte [esp + 0x20], al
and eax, 0xffffffdf
mov dword [esp + 0x30], ebx
cmp al, 0x45
je 0x46e3b5
mov eax, dword [esp + 0x68]
cmp dword [esp + 0x30], 0x13
movzx eax, byte [eax]
movzx ebx, byte [eax + 0x582620]
ja 0x46e68a
mov edx, dword [esp + 0x28]
mov ecx, dword [esp + 0x2c]
mov eax, 0x28a
add edx, 0x156
adc ecx, 0
cmp eax, edx
mov eax, 0
sbb eax, ecx
jae 0x46e664
mov edx, dword [esp + 0x28]
mov ecx, dword [esp + 0x2c]
cmp edx, 0xfffffeaa
mov eax, ecx
sbb eax, 0xffffffff
jl 0x46e631
mov edx, dword [esp + 0x40]
mov ecx, dword [esp + 0x44]
mov eax, edx
or eax, ecx
jne 0x46ccbc
mov eax, dword [esp + 0x60]
xor edx, edx
xor ecx, ecx
add eax, 0x10
mov esi, dword [esp + 0x60]
mov dword [esp + 0x60], eax
mov dword [esi], 0
mov dword [esi + 4], 0x64000000
mov dword [esi + 8], edx
mov dword [esi + 0xc], ecx
test bl, bl
je 0x46ce4b
jmp 0x46ccbc
mov eax, dword [esp + 0x48]
lea edx, [esp + 0x78]
call fcn.0046acf0
test al, al
je 0x46ccbc
mov eax, dword [esp + 0x60]
mov edx, dword [esp + 0x78]
mov ecx, dword [esp + 0x7c]
add eax, 0x10
jmp 0x46e63c
mov eax, dword [esp + 0x3c]
jmp 0x46e693
add eax, 1
movzx ecx, byte [eax]
lea edx, [ecx - 0x2e]
and dl, 0xfd
je 0x46e690
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp + 0x30]
sub eax, ecx
sub edx, eax
cmp edx, 0x13
jbe 0x46e5e9
mov edx, dword [esp + 0x60]
mov eax, dword [esp + 0x48]
call fcn.0046ad80
test eax, eax
jne 0x46c5ad
add dword [esp + 0x60], 0x10
jmp 0x46e657
mov ebx, dword [esp + 0x40]
xor eax, eax
mov esi, dword [esp + 0x44]
cmp eax, ebx
mov eax, 0x80000000
sbb eax, esi
jb 0x46ccbc
mov ecx, dword [esp + 0x60]
xor eax, eax
xor edx, edx
mov dword [ecx], eax
mov eax, ebx
mov ebx, ecx
neg eax
mov dword [ecx + 4], 0x6c000000
mov dword [ecx + 8], eax
mov eax, dword [esp + 0x68]
sbb edx, esi
mov dword [ecx + 0xc], edx
movzx eax, byte [eax]
cmp byte [eax + 0x582620], 0
jne 0x46ccbc
add ebx, 0x10
mov dword [esp + 0x60], ebx
jmp 0x46ce4b
mov ebx, esi
mov ecx, dword [esp + 0x18]
mov byte [esp + 0x20], bl
cmp dword [esp + 0x68], ecx
je 0x46ccbc
mov esi, dword [esp + 0x68]
lea ebx, [ecx + 0x12]
cmp ebx, esi
jb 0x46e764
movzx ebx, byte [esp + 0x20]
cmp bl, 0x2d
jne 0x46e757
neg eax
adc edx, 0
neg edx
add dword [esp + 0x28], eax
adc dword [esp + 0x2c], edx
jmp 0x46e5d0
movzx esi, byte [esp + 0x20]
jmp 0x46e76e
add ecx, 1
cmp byte [ecx], 0x30
je 0x46e76b
mov ebx, esi
add ecx, 0x12
mov byte [esp + 0x20], bl
mov ebx, dword [esp + 0x68]
cmp ecx, ebx
jae 0x46e746
mov eax, 0xa763ffff
mov edx, 0xde0b6b3
jmp 0x46e746