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

Disassembly:
sub esp, 0x3c
mov eax, dword [0x721bb0]
push esi
mov esi, ecx
mov dword [esp + 0x3c], eax
cmp byte [esi + 0x4a], 1
mov dword [esp + 0xc], esi
je 0x56a03b
xor al, al
pop esi
mov ecx, dword [esp + 0x38]
call fcn.00692fc7
add esp, 0x3c
ret 0x20
mov eax, dword [esp + 0x44]
push ebx
push ebp
mov ebp, dword [esp + 0x68]
push edi
mov ecx, 0x13
mov edi, ebp
xor bl, bl
rep movsd dword es:[edi], dword [esi]
mov byte [esp + 0x13], bl
mov dword [esp + 0x14], eax
lea esp, [esp]
cmp byte [esp + 0x54], 1
jne 0x56a07a
cmp bl, 0xc
je 0x56a231
cmp bl, 0xa
jne 0x56a08c
jmp 0x56a231
cmp bl, 0xb
je 0x56a231
cmp bl, 9
je 0x56a231
cmp bl, 8
mov byte [esp + 0x6c], 1
je 0x56a0c0
cmp bl, 7
je 0x56a0c0
cmp bl, 6
je 0x56a0c0
cmp byte [esp + 0x58], 1
jne 0x56a0b1
cmp bl, 9
je 0x56a0bb
cmp bl, 0xa
jmp 0x56a0b9
cmp bl, 0xb
je 0x56a0bb
cmp bl, 0xc
jne 0x56a0c0
mov byte [esp + 0x6c], 0
mov ecx, dword [esp + 0x14]
mov esi, dword [ecx]
test esi, esi
je 0x56a231
mov edx, dword [esp + 0x60]
mov eax, dword [esp + 0x68]
mov ecx, dword [esp + 0x64]
push edx
push eax
push ecx
push esi
call fcn.00569a20
add esp, 0x10
test al, al
je 0x56a231
mov ebx, dword [esi + 0x7c]
mov eax, dword [esi + 0x60]
mov ecx, dword [esi + 0x64]
mov edx, dword [esi + 0x5c]
mov edi, dword [esi + 0x74]
mov dword [esp + 0x3c], ebx
mov ebx, dword [esi + 0x80]
mov dword [esp + 0x40], ebx
mov ebx, dword [esi + 0x84]
mov dword [esp + 0x44], ebx
mov dword [esp + 0x20], eax
mov eax, dword [esi + 0x68]
mov ebx, dword [esp + 0x20]
shr ebx, 0x10
mov dword [esp + 0x24], ecx
mov ecx, dword [esi + 0x70]
mov dword [esp + 0x30], ecx
mov ecx, dword [esi + 0x78]
mov dword [esp + 0x1c], edx
mov edx, dword [esi + 0x6c]
add word [ebp + 4], bx
mov ebx, dword [esp + 0x24]
add word [ebp + 0x1e], cx
movzx ecx, word [ebp + 0xa]
mov dword [esp + 0x28], eax
imul eax, eax, 0x32
shr ebx, 0x10
add word [ebp + 8], bx
mov ebx, edi
shr ebx, 0x10
add word [ebp + 0x1c], bx
movzx eax, ax
mov ebx, 0xffff
sub ebx, ecx
cmp ebx, eax
mov dword [esp + 0x2c], edx
mov dword [esp + 0x34], edi
jg 0x56a17c
mov eax, 0xffff
jmp 0x56a17e
add eax, ecx
imul edx, edx, 0x32
mov word [ebp + 0xa], ax
movzx eax, word [ebp + 0xe]
movzx ecx, dx
mov edx, 0xffff
sub edx, eax
cmp edx, ecx
jg 0x56a19e
mov eax, 0xffff
jmp 0x56a1a0
add eax, ecx
mov cx, word [esp + 0x2e]
mov dx, word [esp + 0x32]
add word [ebp + 0x10], cx
add word [ebp + 0x14], dx
mov cx, word [esp + 0x3e]
mov dx, word [esp + 0x40]
add word [ebp + 0x1a], cx
add word [ebp + 0x20], dx
mov cx, word [esp + 0x44]
mov dx, word [esp + 0x46]
add word [ebp + 0x16], di
add word [ebp + 0x24], cx
add word [ebp + 0x26], dx
mov bl, byte [esp + 0x13]
mov word [ebp + 0xe], ax
mov ax, word [esp + 0x2a]
add word [ebp + 0xc], ax
mov ax, word [esp + 0x3c]
add word [ebp + 0x18], ax
mov ax, word [esp + 0x42]
add word [ebp + 0x22], ax
cmp byte [esp + 0x6c], 1
jne 0x56a231
mov ax, word [esp + 0x1e]
add word [ebp], ax
mov cx, word [esp + 0x20]
mov dx, word [esp + 0x24]
add word [ebp + 2], cx
add word [ebp + 6], dx
mov ax, word [esp + 0x30]
add word [ebp + 0x12], ax
mov ecx, dword [esi + 4]
mov dl, byte [ecx + 0x13]
mov byte [ebp + 0x48], dl
mov ecx, dword [esp + 0x14]
inc bl
add ecx, 4
cmp bl, 0xf
mov byte [esp + 0x13], bl
mov dword [esp + 0x14], ecx
jb 0x56a060
cmp byte [esp + 0x58], 1
jne 0x56a285
cmp byte [esp + 0x54], 1
jne 0x56a262
mov eax, dword [esp + 0x50]
mov eax, dword [eax + 0x2c]
jmp 0x56a269
mov ecx, dword [esp + 0x50]
mov eax, dword [ecx + 0x30]
test eax, eax
je 0x56a281
mov edx, dword [eax + 4]
mov al, byte [edx + 0x15]
cmp al, 0x13
je 0x56a27b
cmp al, 0x24
jne 0x56a285
mov byte [ebp + 0x49], 2
jmp 0x56a285
mov byte [ebp + 0x49], 0
movsx eax, word [ebp]
mov esi, dword [esp + 0x18]
mov dword [esp + 0x6c], eax
fild dword [esp + 0x6c]
fstp dword [esp + 0x6c]
fld dword [esp + 0x6c]
fmul dword [esi + 0x44]
call fcn.00693530
movsx ecx, word [ebp + 2]
mov dword [esp + 0x6c], ecx
mov word [ebp], ax
fild dword [esp + 0x6c]
fstp dword [esp + 0x6c]
fld dword [esp + 0x6c]
fmul dword [esi + 0x44]
call fcn.00693530
mov edx, dword [esp + 0x5c]
mov word [ebp + 2], ax
cmp word [edx + 2], 0
mov byte [esp + 0x6c], 0
jbe 0x56b381
mov bl, byte [esp + 0x60]
movzx eax, byte [esp + 0x6c]
mov ecx, dword [esp + 0x5c]
lea esi, [ecx + eax*4 + 4]
mov ecx, dword [0x731ea8]
xor edi, edi
mov di, word [esi]
push edi
call fcn.0056c8c0
test eax, eax
je 0x56a311
movzx eax, word [eax + 0x1e6]
test ax, ax
je 0x56a311
mov edi, eax
movzx eax, di
cmp eax, 0x9102
jg 0x56acd0
je 0x56ab3f
cmp eax, 0x8306
jg 0x56a71c
je 0x56b18c
cmp eax, 0x8107
jg 0x56a705
je case.0x56acf6.37136
sub eax, 0x8102
je 0x56a558
dec eax
je 0x56a3c1
sub eax, 3
jne case.0x56acf6.37126
movsx eax, byte [esi + 2]
movsx edx, byte [esi + 3]
lea ecx, [eax + eax*2]
lea eax, [edx + ecx*2]
shl eax, 1
mov dword [esp + 0x60], eax
movzx ecx, bl
fild dword [esp + 0x60]
mov dword [esp + 0x60], ecx
fstp dword [esp + 0x68]
fild dword [esp + 0x60]
fstp dword [esp + 0x60]
fld dword [esp + 0x60]
fmul dword [0x6e4e68]
fadd dword [0x6d4fc8]
fmul dword [esp + 0x68]
call fcn.00693530
add word [ebp + 0x10], ax
movsx ax, byte [esi + 2]
lea edx, [eax + eax*2]
movsx ax, byte [esi + 3]
lea ecx, [eax + edx*2]
shl ecx, 1
add word [ebp + 0x1e], cx
jmp case.0x56acf6.37126
cmp byte [esp + 0x54], 1
mov ecx, dword [esp + 0x50]
jne 0x56a3d4
mov eax, dword [ecx + 0x2c]
mov edi, dword [ecx + 0x24]
jmp 0x56a3da
mov eax, dword [ecx + 0x30]
mov edi, dword [ecx + 0x28]
test eax, eax
je case.0x56acf6.37126
mov edx, dword [eax + 4]
mov al, byte [edx + 0x15]
cmp al, 0xd
je 0x56a3f4
cmp al, 0xe
jne case.0x56acf6.37126
mov cl, byte [esp + 0x58]
cmp cl, 1
jne 0x56a49b
movsx edx, byte [esi + 3]
movzx eax, bl
mov dword [esp + 0x60], eax
movsx eax, byte [esi + 2]
fild dword [esp + 0x60]
lea ecx, [eax + eax*2]
lea eax, [edx + ecx*2]
fstp dword [esp + 0x60]
lea eax, [eax + eax*2]
fld dword [esp + 0x60]
mov dword [esp + 0x68], eax
fmul dword [0x6e4e68]
fadd dword [0x6d4fc8]
fstp dword [esp + 0x60]
fild dword [esp + 0x68]
fstp dword [esp + 0x68]
fld dword [esp + 0x68]
fmul dword [esp + 0x60]
call fcn.00693530
add word [ebp], ax
movsx eax, byte [esi + 2]
movsx edx, byte [esi + 3]
lea ecx, [eax + eax*2]
lea eax, [edx + ecx*2]
lea eax, [eax + eax*2]
mov dword [esp + 0x68], eax
fild dword [esp + 0x68]
fstp dword [esp + 0x68]
fld dword [esp + 0x68]
fmul dword [esp + 0x60]
call fcn.00693530
add word [ebp + 2], ax
movsx ax, byte [esi + 2]
movsx dx, byte [esi + 3]
lea ecx, [eax + eax*2]
lea eax, [edx + ecx*2]
mov cl, byte [esp + 0x58]
lea eax, [eax + eax*2]
add word [ebp + 6], ax
test edi, edi
je 0x56a6ef
mov edx, dword [edi + 4]
mov al, byte [edx + 0x15]
cmp al, 0xb
je 0x56a4b5
cmp al, 0xd
jne 0x56a6ef
test cl, cl
jne case.0x56acf6.37126
movsx edx, byte [esi + 3]
movzx eax, bl
mov dword [esp + 0x60], eax
movsx eax, byte [esi + 2]
fild dword [esp + 0x60]
lea ecx, [eax + eax*2]
lea eax, [edx + ecx*2]
fstp dword [esp + 0x60]
lea eax, [eax + eax*2]
fld dword [esp + 0x60]
mov dword [esp + 0x68], eax
fmul dword [0x6e4e68]
fadd dword [0x6d4fc8]
fstp dword [esp + 0x60]
fild dword [esp + 0x68]
fstp dword [esp + 0x68]
fld dword [esp + 0x68]
fmul dword [esp + 0x60]
call fcn.00693530
add word [ebp], ax
movsx eax, byte [esi + 2]
movsx edx, byte [esi + 3]
lea ecx, [eax + eax*2]
lea eax, [edx + ecx*2]
lea eax, [eax + eax*2]
mov dword [esp + 0x68], eax
fild dword [esp + 0x68]
fstp dword [esp + 0x68]
fld dword [esp + 0x68]
fmul dword [esp + 0x60]
call fcn.00693530
add word [ebp + 2], ax
movsx ax, byte [esi + 2]
movsx dx, byte [esi + 3]
lea ecx, [eax + eax*2]
lea eax, [edx + ecx*2]
lea eax, [eax + eax*2]
add word [ebp + 6], ax
jmp case.0x56acf6.37126
cmp byte [esp + 0x54], 1
mov ecx, dword [esp + 0x50]
jne 0x56a56b
mov eax, dword [ecx + 0x2c]
mov edi, dword [ecx + 0x24]
jmp 0x56a571
mov eax, dword [ecx + 0x30]
mov edi, dword [ecx + 0x28]
test eax, eax
je case.0x56acf6.37126
mov edx, dword [eax + 4]
mov al, byte [edx + 0x15]
cmp al, 0xb
je 0x56a58b
cmp al, 0xc
jne case.0x56acf6.37126
mov cl, byte [esp + 0x58]
cmp cl, 1
jne 0x56a632
movsx edx, byte [esi + 3]
movzx eax, bl
mov dword [esp + 0x60], eax
movsx eax, byte [esi + 2]
fild dword [esp + 0x60]
lea ecx, [eax + eax*2]
lea eax, [edx + ecx*2]
fstp dword [esp + 0x60]
lea eax, [eax + eax*2]
fld dword [esp + 0x60]
mov dword [esp + 0x68], eax
fmul dword [0x6e4e68]
fadd dword [0x6d4fc8]
fstp dword [esp + 0x60]
fild dword [esp + 0x68]
fstp dword [esp + 0x68]
fld dword [esp + 0x68]
fmul dword [esp + 0x60]
call fcn.00693530
add word [ebp], ax
movsx eax, byte [esi + 2]
movsx edx, byte [esi + 3]
lea ecx, [eax + eax*2]
lea eax, [edx + ecx*2]
lea eax, [eax + eax*2]
mov dword [esp + 0x68], eax
fild dword [esp + 0x68]
fstp dword [esp + 0x68]
fld dword [esp + 0x68]
fmul dword [esp + 0x60]
call fcn.00693530
add word [ebp + 2], ax
movsx ax, byte [esi + 2]
movsx dx, byte [esi + 3]
lea ecx, [eax + eax*2]
lea eax, [edx + ecx*2]
mov cl, byte [esp + 0x58]
lea eax, [eax + eax*2]
add word [ebp + 6], ax
test edi, edi
je 0x56a6ef
mov edx, dword [edi + 4]
mov al, byte [edx + 0x15]
cmp al, 0xb
je 0x56a64c
cmp al, 0xd
jne 0x56a6ef
test cl, cl
jne case.0x56acf6.37126
movsx edx, byte [esi + 3]
movzx eax, bl
mov dword [esp + 0x60], eax
movsx eax, byte [esi + 2]
fild dword [esp + 0x60]
lea ecx, [eax + eax*2]
lea eax, [edx + ecx*2]
fstp dword [esp + 0x60]
lea eax, [eax + eax*2]
fld dword [esp + 0x60]
mov dword [esp + 0x68], eax
fmul dword [0x6e4e68]
fadd dword [0x6d4fc8]
fstp dword [esp + 0x60]
fild dword [esp + 0x68]
fstp dword [esp + 0x68]
fld dword [esp + 0x68]
fmul dword [esp + 0x60]
call fcn.00693530
add word [ebp], ax
movsx eax, byte [esi + 2]
movsx edx, byte [esi + 3]
lea ecx, [eax + eax*2]
lea eax, [edx + ecx*2]
lea eax, [eax + eax*2]
mov dword [esp + 0x68], eax
fild dword [esp + 0x68]
fstp dword [esp + 0x68]
fld dword [esp + 0x68]
fmul dword [esp + 0x60]
call fcn.00693530
add word [ebp + 2], ax
movsx ax, byte [esi + 2]
movsx dx, byte [esi + 3]
lea ecx, [eax + eax*2]
lea eax, [edx + ecx*2]
lea eax, [eax + eax*2]
add word [ebp + 6], ax
jmp case.0x56acf6.37126
cmp cl, 1
jne case.0x56acf6.37126
mov cl, byte [esi + 2]
mov al, byte [ebp + 0x49]
add al, cl
jmp 0x56b362
sub eax, 0x8202
je case.0x56acf6.37128
dec eax
je 0x56b13f
jmp case.0x56acf6.37126
cmp eax, 0x8705
jg 0x56a965
je 0x56a7d9
cmp eax, 0x8402
je 0x56a759
cmp eax, 0x8604
jne case.0x56acf6.37126
cmp byte [esp + 0x54], 1
mov ecx, dword [esp + 0x50]
jne 0x56aa4f
mov eax, dword [ecx + 0x2c]
mov edx, dword [ecx + 0x24]
jmp 0x56aa55
movsx eax, byte [esi + 2]
movsx ecx, byte [esi + 3]
movzx edx, bl
mov dword [esp + 0x60], edx
lea eax, [eax + eax*2]
lea edx, [ecx + eax*2]
fild dword [esp + 0x60]
mov dword [esp + 0x68], edx
fstp dword [esp + 0x60]
fld dword [esp + 0x60]
fmul dword [0x6e4e68]
fadd dword [0x6d4fc8]
fstp dword [esp + 0x60]
fild dword [esp + 0x68]
fstp dword [esp + 0x68]
fld dword [esp + 0x68]
fmul dword [esp + 0x60]
call fcn.00693530
add word [ebp + 0x10], ax
movsx eax, byte [esi + 2]
movsx ecx, byte [esi + 3]
lea eax, [eax + eax*2]
lea edx, [ecx + eax*2]
shl edx, 1
mov dword [esp + 0x68], edx
fild dword [esp + 0x68]
fstp dword [esp + 0x68]
fld dword [esp + 0x68]
fmul dword [esp + 0x60]
call fcn.00693530
add word [ebp + 0x1c], ax
jmp case.0x56acf6.37126
cmp byte [esp + 0x54], 1
mov ecx, dword [esp + 0x50]
jne 0x56a7ec
mov eax, dword [ecx + 0x2c]
mov edi, dword [ecx + 0x24]
jmp 0x56a7f2
mov eax, dword [ecx + 0x30]
mov edi, dword [ecx + 0x28]
test eax, eax
je case.0x56acf6.37126
mov eax, dword [eax + 4]
cmp byte [eax + 0x15], 0x14
jne case.0x56acf6.37126
mov al, byte [esp + 0x58]
cmp al, 1
jne 0x56a8ad
movsx eax, byte [esi + 2]
movzx ecx, bl
mov dword [esp + 0x60], ecx
lea edx, [eax + eax*2]
movsx eax, byte [esi + 3]
fild dword [esp + 0x60]
lea eax, [eax + edx*2]
fstp dword [esp + 0x60]
lea ecx, [eax + eax*2]
fld dword [esp + 0x60]
mov dword [esp + 0x68], ecx
fmul dword [0x6e4e68]
fadd dword [0x6d4fc8]
fstp dword [esp + 0x60]
fild dword [esp + 0x68]
fstp dword [esp + 0x68]
fld dword [esp + 0x68]
fmul dword [esp + 0x60]
call fcn.00693530
add word [ebp], ax
movsx eax, byte [esi + 2]
lea edx, [eax + eax*2]
movsx eax, byte [esi + 3]
lea eax, [eax + edx*2]
lea ecx, [eax + eax*2]
mov dword [esp + 0x68], ecx
fild dword [esp + 0x68]
fstp dword [esp + 0x68]
fld dword [esp + 0x68]
fmul dword [esp + 0x60]
call fcn.00693530
add word [ebp + 2], ax
movsx ax, byte [esi + 2]
lea edx, [eax + eax*2]
movsx ax, byte [esi + 3]
lea eax, [eax + edx*2]
lea ecx, [eax + eax*2]
add word [ebp + 6], cx
mov al, byte [esp + 0x58]
test edi, edi
je 0x56b10b
mov edx, dword [edi + 4]
cmp byte [edx + 0x15], 0x14
jne 0x56b10b
test al, al
jne case.0x56acf6.37126
movsx edx, byte [esi + 3]
movzx eax, bl
mov dword [esp + 0x60], eax
movsx eax, byte [esi + 2]
fild dword [esp + 0x60]
lea ecx, [eax + eax*2]
lea eax, [edx + ecx*2]
fstp dword [esp + 0x60]
lea eax, [eax + eax*2]
fld dword [esp + 0x60]
mov dword [esp + 0x68], eax
fmul dword [0x6e4e68]
fadd dword [0x6d4fc8]
fstp dword [esp + 0x60]
fild dword [esp + 0x68]
fstp dword [esp + 0x68]
fld dword [esp + 0x68]
fmul dword [esp + 0x60]
call fcn.00693530
add word [ebp], ax
movsx eax, byte [esi + 2]
movsx edx, byte [esi + 3]
lea ecx, [eax + eax*2]
lea eax, [edx + ecx*2]
lea eax, [eax + eax*2]
mov dword [esp + 0x68], eax
fild dword [esp + 0x68]
fstp dword [esp + 0x68]
fld dword [esp + 0x68]
fmul dword [esp + 0x60]
call fcn.00693530
add word [ebp + 2], ax
movsx ax, byte [esi + 2]
movsx dx, byte [esi + 3]
lea ecx, [eax + eax*2]
lea eax, [edx + ecx*2]
lea eax, [eax + eax*2]
add word [ebp + 6], ax
jmp case.0x56acf6.37126
cmp eax, 0x8706
je 0x56a73f
cmp eax, 0x8806
jne case.0x56acf6.37126
cmp byte [esp + 0x58], 1
jne case.0x56acf6.37126
cmp byte [esp + 0x54], 1
jne 0x56a996
mov edx, dword [esp + 0x50]
mov eax, dword [edx + 0x2c]
jmp 0x56a99d
mov eax, dword [esp + 0x50]
mov eax, dword [eax + 0x30]
test eax, eax
je case.0x56acf6.37126
mov ecx, dword [eax + 4]
mov al, byte [ecx + 0x15]
cmp al, 0x11
je 0x56a9b7
cmp al, 0x12
jne case.0x56acf6.37126
movsx eax, byte [esi + 2]
movsx ecx, byte [esi + 3]
movzx edx, bl
mov dword [esp + 0x60], edx
lea eax, [eax + eax*2]
lea edx, [ecx + eax*2]
fild dword [esp + 0x60]
shl edx, 1
mov dword [esp + 0x68], edx
fstp dword [esp + 0x60]
fld dword [esp + 0x60]
fmul dword [0x6e4e68]
fadd dword [0x6d4fc8]
fstp dword [esp + 0x60]
fild dword [esp + 0x68]
fstp dword [esp + 0x68]
fld dword [esp + 0x68]
fmul dword [esp + 0x60]
call fcn.00693530
add word [ebp], ax
movsx eax, byte [esi + 2]
movsx ecx, byte [esi + 3]
lea eax, [eax + eax*2]
lea edx, [ecx + eax*2]
shl edx, 1
mov dword [esp + 0x68], edx
fild dword [esp + 0x68]
fstp dword [esp + 0x68]
fld dword [esp + 0x68]
fmul dword [esp + 0x60]
call fcn.00693530
add word [ebp + 2], ax
movsx ax, byte [esi + 2]
movsx cx, byte [esi + 3]
lea eax, [eax + eax*2]
lea edx, [ecx + eax*2]
shl edx, 1
add word [ebp + 6], dx
jmp case.0x56acf6.37126
mov eax, dword [ecx + 0x30]
mov edx, dword [ecx + 0x28]
test eax, eax
je case.0x56acf6.37126
test edx, edx
je case.0x56acf6.37126
mov eax, dword [eax + 4]
mov cl, byte [eax + 0x15]
cmp cl, 0xb
je 0x56aa75
cmp cl, 0xd
jne 0x56aa83
mov eax, dword [edx + 4]
mov al, byte [eax + 0x15]
cmp al, 0xb
je 0x56aa99
cmp al, 0xd
je 0x56aa99
cmp cl, 0x14
jne case.0x56acf6.37126
mov ecx, dword [edx + 4]
cmp byte [ecx + 0x15], 0x14
jne case.0x56acf6.37126
movsx eax, byte [esi + 2]
movsx ecx, byte [esi + 3]
movzx edx, bl
mov dword [esp + 0x60], edx
lea eax, [eax + eax*2]
lea eax, [ecx + eax*2]
fild dword [esp + 0x60]
lea edx, [eax + eax*2]
mov dword [esp + 0x68], edx
fstp dword [esp + 0x60]
fld dword [esp + 0x60]
fmul dword [0x6e4e68]
fadd dword [0x6d4fc8]
fstp dword [esp + 0x60]
fild dword [esp + 0x68]
fstp dword [esp + 0x68]
fld dword [esp + 0x68]
fmul dword [esp + 0x60]
call fcn.00693530
add word [ebp], ax
movsx eax, byte [esi + 2]
movsx ecx, byte [esi + 3]
lea eax, [eax + eax*2]
lea eax, [ecx + eax*2]
lea edx, [eax + eax*2]
mov dword [esp + 0x68], edx
fild dword [esp + 0x68]
fstp dword [esp + 0x68]
fld dword [esp + 0x68]
fmul dword [esp + 0x60]
call fcn.00693530
add word [ebp + 2], ax
movsx ax, byte [esi + 2]
movsx cx, byte [esi + 3]
lea eax, [eax + eax*2]
lea eax, [ecx + eax*2]
mov cl, byte [ebp + 0x49]
lea edx, [eax + eax*2]
add word [ebp + 6], dx
mov al, byte [esi + 2]
add cl, al
mov byte [ebp + 0x49], cl
jmp case.0x56acf6.37126
cmp byte [esp + 0x54], 1
mov ecx, dword [esp + 0x50]
jne 0x56ab52
mov eax, dword [ecx + 0x2c]
mov edi, dword [ecx + 0x24]
jmp 0x56ab58
mov eax, dword [ecx + 0x30]
mov edi, dword [ecx + 0x28]
test eax, eax
je case.0x56acf6.37126
mov ecx, dword [eax + 4]
mov al, byte [ecx + 0x15]
cmp al, 0x1e
je 0x56ab72
cmp al, 0x21
jne case.0x56acf6.37126
mov al, byte [esp + 0x58]
cmp al, 1
jne 0x56ac18
movsx eax, byte [esi + 2]
movsx ecx, byte [esi + 3]
movzx edx, bl
mov dword [esp + 0x60], edx
lea eax, [eax + eax*2]
lea eax, [ecx + eax*2]
fild dword [esp + 0x60]
lea edx, [eax + eax*2]
mov dword [esp + 0x68], edx
fstp dword [esp + 0x60]
fld dword [esp + 0x60]
fmul dword [0x6e4e68]
fadd dword [0x6d4fc8]
fstp dword [esp + 0x60]
fild dword [esp + 0x68]
fstp dword [esp + 0x68]
fld dword [esp + 0x68]
fmul dword [esp + 0x60]
call fcn.00693530
add word [ebp], ax
movsx eax, byte [esi + 2]
movsx ecx, byte [esi + 3]
lea eax, [eax + eax*2]
lea eax, [ecx + eax*2]
lea edx, [eax + eax*2]
mov dword [esp + 0x68], edx
fild dword [esp + 0x68]
fstp dword [esp + 0x68]
fld dword [esp + 0x68]
fmul dword [esp + 0x60]
call fcn.00693530
add word [ebp + 2], ax
movsx ax, byte [esi + 2]
movsx cx, byte [esi + 3]
lea eax, [eax + eax*2]
lea eax, [ecx + eax*2]
lea edx, [eax + eax*2]
add word [ebp + 6], dx
mov al, byte [esp + 0x58]
test edi, edi
je 0x56ae8e
mov ecx, dword [edi + 4]
cmp byte [ecx + 0x15], 0x26
jne 0x56ae8e
test al, al
jne case.0x56acf6.37126
movsx eax, byte [esi + 2]
movsx ecx, byte [esi + 3]
movzx edx, bl
mov dword [esp + 0x60], edx
lea eax, [eax + eax*2]
lea eax, [ecx + eax*2]
fild dword [esp + 0x60]
lea edx, [eax + eax*2]
mov dword [esp + 0x68], edx
fstp dword [esp + 0x60]
fld dword [esp + 0x60]
fmul dword [0x6e4e68]
fadd dword [0x6d4fc8]
fstp dword [esp + 0x60]
fild dword [esp + 0x68]
fstp dword [esp + 0x68]
fld dword [esp + 0x68]
fmul dword [esp + 0x60]
call fcn.00693530
add word [ebp], ax
movsx eax, byte [esi + 2]
movsx ecx, byte [esi + 3]
lea eax, [eax + eax*2]
lea eax, [ecx + eax*2]
lea edx, [eax + eax*2]
mov dword [esp + 0x68], edx
fild dword [esp + 0x68]
fstp dword [esp + 0x68]
fld dword [esp + 0x68]
fmul dword [esp + 0x60]
call fcn.00693530
add word [ebp + 2], ax
movsx ax, byte [esi + 2]
movsx cx, byte [esi + 3]
lea eax, [eax + eax*2]
lea eax, [ecx + eax*2]
lea edx, [eax + eax*2]
add word [ebp + 6], dx
jmp case.0x56acf6.37126
cmp eax, 0x9207
jg 0x56b120
je 0x56af7f
sub eax, 0x9105
cmp eax, 0xb
ja case.0x56acf6.37126
movzx ecx, byte [eax + 0x56b3c4]
jmp dword [ecx*4 + 0x56b3ac]
cmp byte [esp + 0x54], 1
mov ecx, dword [esp + 0x50]
jne 0x56ad10
mov eax, dword [ecx + 0x2c]
mov edi, dword [ecx + 0x24]
jmp 0x56ad16
mov eax, dword [ecx + 0x30]
mov edi, dword [ecx + 0x28]
test eax, eax
je case.0x56acf6.37126
mov edx, dword [eax + 4]
mov al, byte [edx + 0x15]
cmp al, 0x1f
je 0x56ad30
cmp al, 0x22
jne case.0x56acf6.37126
mov al, byte [esp + 0x58]
cmp al, 1
jne 0x56add6
movsx edx, byte [esi + 3]
movzx eax, bl
mov dword [esp + 0x60], eax
movsx eax, byte [esi + 2]
fild dword [esp + 0x60]
lea ecx, [eax + eax*2]
lea eax, [edx + ecx*2]
fstp dword [esp + 0x60]
lea eax, [eax + eax*2]
fld dword [esp + 0x60]
mov dword [esp + 0x68], eax
fmul dword [0x6e4e68]
fadd dword [0x6d4fc8]
fstp dword [esp + 0x60]
fild dword [esp + 0x68]
fstp dword [esp + 0x68]
fld dword [esp + 0x68]
fmul dword [esp + 0x60]
call fcn.00693530
add word [ebp], ax
movsx eax, byte [esi + 2]
movsx edx, byte [esi + 3]
lea ecx, [eax + eax*2]
lea eax, [edx + ecx*2]
lea eax, [eax + eax*2]
mov dword [esp + 0x68], eax
fild dword [esp + 0x68]
fstp dword [esp + 0x68]
fld dword [esp + 0x68]
fmul dword [esp + 0x60]
call fcn.00693530
add word [ebp + 2], ax
movsx ax, byte [esi + 2]
movsx dx, byte [esi + 3]
lea ecx, [eax + eax*2]
lea eax, [edx + ecx*2]
lea eax, [eax + eax*2]
add word [ebp + 6], ax
mov al, byte [esp + 0x58]
test edi, edi
je 0x56ae8e
mov ecx, dword [edi + 4]
cmp byte [ecx + 0x15], 0x26
jne 0x56ae8e
test al, al
jne case.0x56acf6.37126
movsx eax, byte [esi + 2]
movsx ecx, byte [esi + 3]
movzx edx, bl
mov dword [esp + 0x60], edx
lea eax, [eax + eax*2]
lea eax, [ecx + eax*2]
fild dword [esp + 0x60]
lea edx, [eax + eax*2]
mov dword [esp + 0x68], edx
fstp dword [esp + 0x60]
fld dword [esp + 0x60]
fmul dword [0x6e4e68]
fadd dword [0x6d4fc8]
fstp dword [esp + 0x60]
fild dword [esp + 0x68]
fstp dword [esp + 0x68]
fld dword [esp + 0x68]
fmul dword [esp + 0x60]
call fcn.00693530
add word [ebp], ax
movsx eax, byte [esi + 2]
movsx ecx, byte [esi + 3]
lea eax, [eax + eax*2]
lea eax, [ecx + eax*2]
lea edx, [eax + eax*2]
mov dword [esp + 0x68], edx
fild dword [esp + 0x68]
fstp dword [esp + 0x68]
fld dword [esp + 0x68]
fmul dword [esp + 0x60]
call fcn.00693530
add word [ebp + 2], ax
movsx ax, byte [esi + 2]
movsx cx, byte [esi + 3]
lea eax, [eax + eax*2]
lea eax, [ecx + eax*2]
lea edx, [eax + eax*2]
add word [ebp + 6], dx
jmp case.0x56acf6.37126
cmp al, 1
jne case.0x56acf6.37126
mov al, byte [esi + 2]
add byte [ebp + 0x49], al
jmp case.0x56acf6.37126
movsx ax, byte [esi + 2]
movsx dx, byte [esi + 3]
lea ecx, [eax + eax*2]
lea eax, [edx + ecx*2]
movzx cx, bl
mov edx, 0xffff
imul eax, ecx
movzx ecx, word [ebp + 0xa]
shl eax, 1
movzx eax, ax
sub edx, ecx
cmp edx, eax
jg 0x56aeda
mov eax, 0xffff
mov word [ebp + 0xa], ax
jmp case.0x56acf6.37126
add eax, ecx
mov word [ebp + 0xa], ax
jmp case.0x56acf6.37126
movsx eax, byte [esi + 2]
movsx ecx, byte [esi + 3]
lea eax, [eax + eax*2]
lea edx, [ecx + eax*2]
shl edx, 1
mov dword [esp + 0x60], edx
movzx eax, bl
fild dword [esp + 0x60]
mov dword [esp + 0x60], eax
fstp dword [esp + 0x68]
fild dword [esp + 0x60]
fstp dword [esp + 0x60]
fld dword [esp + 0x60]
fmul dword [0x6e4e68]
fadd dword [0x6d4fc8]
fmul dword [esp + 0x68]
call fcn.00693530
add word [ebp + 4], ax
jmp case.0x56acf6.37126
movsx eax, byte [esi + 2]
lea edx, [eax + eax*2]
movsx eax, byte [esi + 3]
lea ecx, [eax + edx*2]
shl ecx, 1
mov dword [esp + 0x60], ecx
movzx edx, bl
fild dword [esp + 0x60]
mov dword [esp + 0x60], edx
fstp dword [esp + 0x68]
fild dword [esp + 0x60]
fstp dword [esp + 0x60]
fld dword [esp + 0x60]
fmul dword [0x6e4e68]
fadd dword [0x6d4fc8]
fmul dword [esp + 0x68]
call fcn.00693530
add word [ebp + 0x12], ax
jmp case.0x56acf6.37126
cmp byte [esp + 0x54], 1
mov ecx, dword [esp + 0x50]
jne 0x56af92
mov eax, dword [ecx + 0x2c]
mov edi, dword [ecx + 0x24]
jmp 0x56af98
mov eax, dword [ecx + 0x30]
mov edi, dword [ecx + 0x28]
test eax, eax
je case.0x56acf6.37126
mov eax, dword [eax + 4]
cmp byte [eax + 0x15], 0x23
jne case.0x56acf6.37126
mov al, byte [esp + 0x58]
cmp al, 1
jne 0x56b053
movsx eax, byte [esi + 2]
movzx ecx, bl
mov dword [esp + 0x60], ecx
lea edx, [eax + eax*2]
movsx eax, byte [esi + 3]
fild dword [esp + 0x60]
lea eax, [eax + edx*2]
fstp dword [esp + 0x60]
lea ecx, [eax + eax*2]
fld dword [esp + 0x60]
mov dword [esp + 0x68], ecx
fmul dword [0x6e4e68]
fadd dword [0x6d4fc8]
fstp dword [esp + 0x60]
fild dword [esp + 0x68]
fstp dword [esp + 0x68]
fld dword [esp + 0x68]
fmul dword [esp + 0x60]
call fcn.00693530
add word [ebp], ax
movsx eax, byte [esi + 2]
lea edx, [eax + eax*2]
movsx eax, byte [esi + 3]
lea eax, [eax + edx*2]
lea ecx, [eax + eax*2]
mov dword [esp + 0x68], ecx
fild dword [esp + 0x68]
fstp dword [esp + 0x68]
fld dword [esp + 0x68]
fmul dword [esp + 0x60]
call fcn.00693530
add word [ebp + 2], ax
movsx ax, byte [esi + 2]
lea edx, [eax + eax*2]
movsx ax, byte [esi + 3]
lea eax, [eax + edx*2]
lea ecx, [eax + eax*2]
add word [ebp + 6], cx
mov al, byte [esp + 0x58]
test edi, edi
je 0x56b10b
mov edx, dword [edi + 4]
cmp byte [edx + 0x15], 0x28
jne 0x56b10b
test al, al
jne case.0x56acf6.37126
movsx edx, byte [esi + 3]
movzx eax, bl
mov dword [esp + 0x60], eax
movsx eax, byte [esi + 2]
fild dword [esp + 0x60]
lea ecx, [eax + eax*2]
lea eax, [edx + ecx*2]
fstp dword [esp + 0x60]
lea eax, [eax + eax*2]
fld dword [esp + 0x60]
mov dword [esp + 0x68], eax
fmul dword [0x6e4e68]
fadd dword [0x6d4fc8]
fstp dword [esp + 0x60]
fild dword [esp + 0x68]
fstp dword [esp + 0x68]
fld dword [esp + 0x68]
fmul dword [esp + 0x60]
call fcn.00693530
add word [ebp], ax
movsx eax, byte [esi + 2]
movsx edx, byte [esi + 3]
lea ecx, [eax + eax*2]
lea eax, [edx + ecx*2]
lea eax, [eax + eax*2]
mov dword [esp + 0x68], eax
fild dword [esp + 0x68]
fstp dword [esp + 0x68]
fld dword [esp + 0x68]
fmul dword [esp + 0x60]
call fcn.00693530
add word [ebp + 2], ax
movsx ax, byte [esi + 2]
movsx dx, byte [esi + 3]
lea ecx, [eax + eax*2]
lea eax, [edx + ecx*2]
lea eax, [eax + eax*2]
add word [ebp + 6], ax
jmp case.0x56acf6.37126
cmp al, 1
jne case.0x56acf6.37126
mov cl, byte [esi + 2]
mov al, byte [ebp + 0x49]
add al, cl
jmp 0x56b362
cmp eax, 0x9214
jg 0x56b25d
je 0x56b1df
sub eax, 0x9212
je 0x56b18c
dec eax
jne case.0x56acf6.37126
movsx eax, byte [esi + 2]
lea edx, [eax + eax*2]
movsx eax, byte [esi + 3]
lea ecx, [eax + edx*2]
shl ecx, 1
mov dword [esp + 0x60], ecx
movzx edx, bl
fild dword [esp + 0x60]
mov dword [esp + 0x60], edx
fstp dword [esp + 0x68]
fild dword [esp + 0x60]
fstp dword [esp + 0x60]
fld dword [esp + 0x60]
fmul dword [0x6e4e68]
fadd dword [0x6d4fc8]
fmul dword [esp + 0x68]
call fcn.00693530
add word [ebp + 8], ax
jmp case.0x56acf6.37126
movsx ax, byte [esi + 2]
movsx cx, byte [esi + 3]
movzx dx, bl
lea eax, [eax + eax*2]
lea eax, [ecx + eax*2]
movzx ecx, word [ebp + 0xe]
imul eax, edx
shl eax, 1
movzx eax, ax
mov edx, 0xffff
sub edx, ecx
cmp edx, eax
jg 0x56b1be
mov eax, 0xffff
jmp 0x56b1c0
add eax, ecx
mov word [ebp + 0xe], ax
movsx ax, byte [esi + 2]
movsx cx, byte [esi + 3]
lea eax, [eax + eax*2]
lea edx, [ecx + eax*2]
shl edx, 1
add word [ebp + 0x18], dx
jmp case.0x56acf6.37126
movsx edx, byte [esi + 3]
movzx eax, bl
mov dword [esp + 0x60], eax
movsx eax, byte [esi + 2]
fild dword [esp + 0x60]
lea ecx, [eax + eax*2]
lea eax, [edx + ecx*2]
fstp dword [esp + 0x60]
mov dword [esp + 0x68], eax
fld dword [esp + 0x60]
fmul dword [0x6e4e68]
fadd dword [0x6d4fc8]
fstp dword [esp + 0x60]
fild dword [esp + 0x68]
fstp dword [esp + 0x68]
fld dword [esp + 0x68]
fmul dword [esp + 0x60]
call fcn.00693530
add word [ebp + 0xc], ax
movsx eax, byte [esi + 2]
movsx edx, byte [esi + 3]
lea ecx, [eax + eax*2]
lea eax, [edx + ecx*2]
mov dword [esp + 0x68], eax
fild dword [esp + 0x68]
fstp dword [esp + 0x68]
fld dword [esp + 0x68]
fmul dword [esp + 0x60]
call fcn.00693530
add word [ebp + 0x10], ax
jmp case.0x56acf6.37126
cmp eax, 0x9405
je 0x56b26f
cmp eax, 0x9803
jne case.0x56acf6.37126
cmp byte [esp + 0x54], 1
mov ecx, dword [esp + 0x50]
jne 0x56b282
mov eax, dword [ecx + 0x2c]
mov ecx, dword [ecx + 0x24]
jmp 0x56b288
mov eax, dword [ecx + 0x30]
mov ecx, dword [ecx + 0x28]
test eax, eax
je case.0x56acf6.37126
test ecx, ecx
je case.0x56acf6.37126
mov edx, dword [eax + 4]
mov al, byte [edx + 0x15]
cmp al, 0x1e
je 0x56b2a6
cmp al, 0x1f
jne 0x56b2af
mov edx, dword [ecx + 4]
cmp byte [edx + 0x15], 0x26
je 0x56b2c4
cmp al, 0x23
jne case.0x56acf6.37126
mov eax, dword [ecx + 4]
cmp byte [eax + 0x15], 0x28
jne case.0x56acf6.37126
movsx eax, byte [esi + 2]
movzx ecx, bl
mov dword [esp + 0x60], ecx
lea edx, [eax + eax*2]
movsx eax, byte [esi + 3]
fild dword [esp + 0x60]
lea eax, [eax + edx*2]
fstp dword [esp + 0x60]
lea ecx, [eax + eax*2]
fld dword [esp + 0x60]
mov dword [esp + 0x68], ecx
fmul dword [0x6e4e68]
fadd dword [0x6d4fc8]
fstp dword [esp + 0x60]
fild dword [esp + 0x68]
fstp dword [esp + 0x68]
fld dword [esp + 0x68]
fmul dword [esp + 0x60]
call fcn.00693530
add word [ebp], ax
movsx eax, byte [esi + 2]
lea edx, [eax + eax*2]
movsx eax, byte [esi + 3]
lea eax, [eax + edx*2]
lea ecx, [eax + eax*2]
mov dword [esp + 0x68], ecx
fild dword [esp + 0x68]
fstp dword [esp + 0x68]
fld dword [esp + 0x68]
fmul dword [esp + 0x60]
call fcn.00693530
add word [ebp + 2], ax
movsx ax, byte [esi + 2]
lea edx, [eax + eax*2]
movsx ax, byte [esi + 3]
lea eax, [eax + edx*2]
lea ecx, [eax + eax*2]
add word [ebp + 6], cx
mov dl, byte [esi + 2]
mov al, byte [ebp + 0x49]
add al, dl
mov byte [ebp + 0x49], al
mov al, byte [esp + 0x6c]
mov ecx, dword [esp + 0x5c]
inc al
mov byte [esp + 0x6c], al
movzx ax, al
cmp ax, word [ecx + 2]
jb 0x56a2e1
cmp byte [ebp + 0x49], 6
jbe 0x56b38b
mov byte [ebp + 0x49], 6
mov ecx, ebp
call fcn.00569820
mov ecx, dword [esp + 0x48]
pop edi
mov byte [ebp + 0x4a], 2
pop ebp
pop ebx
mov al, 1
pop esi
call fcn.00692fc7
add esp, 0x3c
ret 0x20