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

Disassembly:
sub esp, 0x1ac
mov eax, dword [esp + 0x70]
and eax, 0xe7000000
or eax, 0x7000000
and eax, 0x1fffffff
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x78]
and eax, 0xfe1f000f
or al, 0xf
push ebx
push ebp
push esi
mov esi, 0xa
mov ebp, dword [esp + 0x1bc]
xor ecx, ecx
and eax, 0xffe1ffff
or eax, 0x10000
mov dword [esp + 0x84], eax
mov eax, esi
mov dword [esp + 0x68], eax
mov dword [esp + 0x6c], eax
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x8c]
and eax, 0xe7000000
or eax, 0x7000000
and eax, 0x1fffffff
mov dword [esp + 0x8c], eax
mov eax, dword [esp + 0x94]
and eax, 0xfe1f000f
or al, 0xf
push edi
mov dword [esp + 0x10], edx
mov word [esp + 0x18], cx
mov word [esp + 0x1a], cx
mov dword [esp + 0x7c], esi
mov dword [esp + 0x84], ecx
and eax, 0xffe1ffff
or eax, 0x10000
mov dword [esp + 0x98], eax
mov dword [esp + 0x170], 0x3f800000
mov dword [esp + 0x174], 0x3f800000
mov dword [esp + 0x178], 0x3f800000
mov dword [esp + 0x17c], 0x3f800000
mov dword [esp + 0x64], 1
mov dword [esp + 0x8c], esi
mov dword [esp + 0x94], ecx
xor eax, eax
mov esi, dword [esp + eax*4 + 0x6c]
mov edi, eax
and esi, 0xff
shl edi, 8
or esi, edi
mov dword [esp + eax*4 + 0x6c], esi
mov byte [esp + eax*4 + 0x6c], 8
add eax, 1
cmp eax, 3
jb 0x3088d2
xor edi, edi
cmp edx, ecx
mov dword [ebp + 4], ecx
mov dword [esp + 0xdc], ecx
mov dword [esp + 0xd0], edi
je 0x30b04b
nop
mov ecx, dword [ebp + 0x28]
mov esi, dword [ecx + edi*4]
cmp esi, dword [ebp + 4]
je 0x308939
mov edx, dword [esp + 0x1c4]
push edx
lea ebx, [esp + 0x68]
mov eax, ebp
call fcn.00308490
mov dword [esp + 0xdc], 0
mov eax, dword [ebp + 0x34]
cmp byte [edi + eax], 0
jne case.0x3089a1.0
mov eax, dword [esp + 0x10]
xor ecx, ecx
mov dword [esp + 0x100], ecx
mov dword [esp + 0x104], ecx
mov dword [esp + 0x108], ecx
xor edx, edx
mov dword [esp + 0x10c], ecx
mov cx, word [eax + 4]
mov dword [esp + 0x150], edx
movsx eax, cx
cmp eax, 0x70
mov dword [esp + 0x154], edx
mov dword [esp + 0x158], edx
mov dword [esp + 0x15c], edx
mov dword [esp + 0x68], edx
ja case.0x3089a1.1
movzx edx, byte [eax + 0x30b0fc]
jmp dword [edx*4 + 0x30b0c8]
mov eax, dword [esp + 0x1c4]
test byte [eax + 0x3d], 0x3c
je case.0x30945f.26
mov ecx, dword [esp + 0x10]
cmp byte [ecx + 0xe], 7
jne 0x3089e5
push 0
mov ecx, 0x16
mov edx, dword [esp + 0x14]
push ebp
lea eax, [esp + 0x20]
call fcn.003061f0
push eax
mov edi, ebp
call fcn.00307300
jmp case.0x3089a1.0
mov esi, dword [esp + 0x10]
mov dl, byte [esi + 0xf]
mov ecx, dword [esp + 0x1c4]
push 0xffffffffffffffff
push esi
and edx, 3
mov eax, dword [esp + edx*4 + 0x74]
push eax
push ecx
push ebp
call fcn.00305810
push eax
mov ecx, 0x17
mov edx, esi
jmp 0x3089ce
mov esi, dword [esp + 0x10]
cmp byte [esi + 0x20], 0xa
je 0x308abd
mov edx, dword [esi + 0x20]
mov eax, dword [esp + 0x1c4]
xor edi, edi
push edi
push esi
push edx
push eax
push ebp
call fcn.00305810
push eax
push ebp
call fcn.00306070
push eax
push ebp
mov ecx, 0x15
lea eax, [esp + 0x20]
mov edx, esi
call fcn.003061f0
mov ecx, dword [esi + 0x2c]
and ecx, 0x1f0000
cmp ecx, 0xa0000
jne 0x308ab0
mov cl, byte [eax + 0x69]
test cl, cl
jle 0x308a83
mov edx, dword [eax + 0x84]
mov dword [esp + 0x3c], edx
mov edx, dword [eax + 0x74]
mov dword [esp + 0x40], edx
mov edx, dword [eax + 0x70]
mov dword [esp + 0x44], edx
mov edx, dword [eax + 0x7c]
mov dword [esp + 0x48], edx
test cl, cl
mov dword [esp + 0x38], edi
jle 0x308ab0
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp + 0x40]
mov dword [eax + 0x80], edi
mov dword [eax + 0x84], ecx
mov ecx, dword [esp + 0x44]
mov dword [eax + 0x74], edx
mov edx, dword [esp + 0x48]
mov dword [eax + 0x70], ecx
mov dword [eax + 0x7c], edx
push eax
mov edi, ebp
call fcn.00307300
jmp case.0x3089a1.0
mov esi, dword [esp + 0x10]
mov al, byte [esi + 0xf]
mov edx, dword [esp + 0x1c4]
push 0xffffffffffffffff
push esi
and eax, 3
mov ecx, dword [esp + eax*4 + 0x74]
push ecx
push edx
push ebp
call fcn.00305810
push eax
mov ecx, 0x15
mov edx, esi
jmp 0x3089ce
cmp dword [ebp + 0xec], 0
je 0x308afe
mov eax, dword [esp + 0xdc]
test eax, eax
jne 0x308b4e
mov eax, dword [esp + 0x10]
cmp byte [eax + 0xe], 7
jne 0x308b32
lea eax, [esp + 0x170]
push eax
mov ecx, ebp
call fcn.00305f10
cmp dword [ebp + 0xe8], 0
jne 0x308b4e
push eax
push ebp
call fcn.00306070
push eax
mov ecx, 0xb
jmp 0x3089ca
mov cl, byte [eax + 0xf]
push 0xffffffffffffffff
push eax
mov eax, dword [esp + 0x1cc]
and ecx, 3
mov edx, dword [esp + ecx*4 + 0x74]
push edx
push eax
push ebp
call fcn.00305810
push eax
mov ecx, 0xb
jmp 0x3089ca
mov edx, dword [esp + 0x10]
mov ecx, dword [edx + 0x20]
mov eax, dword [ebp + 0xd0]
sar ecx, 8
mov ecx, dword [eax + ecx*4]
mov eax, dword [ebp + 0x28]
mov eax, dword [eax + ecx*4]
mov ecx, dword [esp + 0x1c4]
push eax
push 0
push ecx
push ebp
mov eax, 0xc
lea ecx, [esp + 0x28]
call fcn.003063f0
push eax
mov edi, ebp
call fcn.00307300
jmp case.0x3089a1.0
mov esi, dword [esp + 0x10]
mov dl, byte [esi + 0xf]
mov ecx, dword [esp + 0x1c4]
push 0xffffffffffffffff
push esi
and edx, 3
mov eax, dword [esp + edx*4 + 0x74]
push eax
push ecx
push ebp
call fcn.00305810
mov ecx, 0x12
jmp 0x308be5
mov esi, dword [esp + 0x10]
mov dl, byte [esi + 0xf]
mov ecx, dword [esp + 0x1c4]
push 0xffffffffffffffff
push esi
and edx, 3
mov eax, dword [esp + edx*4 + 0x74]
push eax
push ecx
push ebp
call fcn.00305810
mov ecx, 0x14
push eax
push ebp
lea eax, [esp + 0x20]
mov edx, esi
call fcn.003061f0
push eax
mov edi, ebp
call fcn.00307300
jmp case.0x3089a1.0
mov eax, dword [esp + 0x1c4]
lea edx, [esp + 0x18]
push edx
push eax
mov eax, dword [esp + 0x18]
push ebp
call fcn.003065e0
push eax
mov edi, ebp
call fcn.00307300
jmp case.0x3089a1.0
mov eax, dword [esp + 0x10]
push ebp
lea edx, [esp + 0x1c]
call fcn.00306920
push eax
mov edi, ebp
call fcn.00307300
jmp case.0x3089a1.0
mov ecx, dword [esp + 0x1c4]
test byte [ecx + 0x3d], 0x3c
je case.0x30945f.26
mov edx, dword [esp + 0x10]
cmp byte [edx + 0xe], 7
je 0x308cb2
mov ebx, dword [esp + 0x1c4]
mov eax, dword [ebp + 4]
mov edi, dword [eax + 0xe8]
mov esi, edx
mov cl, byte [esi + 0xf]
push 0xffffffffffffffff
push esi
and ecx, 3
mov edx, dword [esp + ecx*4 + 0x74]
push edx
push ebx
push ebp
call fcn.00305810
push 1
push edi
push eax
push ebp
mov eax, 0xb
lea edx, [esp + 0x28]
mov ecx, esi
call fcn.00306a50
push eax
mov edi, ebp
call fcn.00307300
mov eax, dword [ebp + 4]
mov esi, dword [eax + 0xf0]
push ebx
lea ebx, [esp + 0x68]
mov eax, ebp
call fcn.00308490
mov edx, dword [esp + 0x10]
push ebp
lea eax, [esp + 0x1c]
call fcn.003069a0
push eax
mov edi, ebp
call fcn.00307300
jmp case.0x3089a1.0
mov ecx, dword [esp + 0x1c4]
test byte [ecx + 0x3d], 0x3c
je case.0x30945f.26
mov edx, dword [ebp + 4]
mov eax, dword [edx + 0xe8]
mov edx, dword [esp + 0x10]
push eax
push 1
mov esi, ecx
push esi
push ebp
mov eax, 0xc
lea ecx, [esp + 0x28]
call fcn.003063f0
push eax
mov edi, ebp
call fcn.00307300
mov eax, dword [ebp + 4]
push esi
mov esi, dword [eax + 0xf0]
lea ebx, [esp + 0x68]
mov eax, ebp
call fcn.00308490
mov edx, dword [esp + 0x10]
push ebp
lea eax, [esp + 0x1c]
call fcn.003069a0
push eax
call fcn.00307300
jmp case.0x3089a1.0
mov esi, dword [esp + 0x1c4]
test byte [esi + 0x3d], 0x3c
je case.0x3089a1.1
mov edx, dword [esp + 0x10]
test byte [edx + 3], 1
jne case.0x3089a1.1
cmp cx, 0x70
je 0x308d6d
cmp dword [esi + 0x1ac], 0
je case.0x3089a1.1
cmp cx, 0x59
je 0x308d6d
mov al, byte [edx + 0x30]
cmp al, 4
je 0x308d9e
cmp al, 5
je 0x308d9e
mov ecx, dword [ebp + 4]
mov byte [ecx + 0xac], 1
cmp byte [edx + 0xe], 7
jne 0x308d89
cmp byte [edx + 0x1c], 0xf
jne 0x308d89
test byte [edx + 0xf], 0x10
je 0x308d9e
mov dword [esp + 0x68], 1
jmp 0x308d9e
mov esi, dword [esp + 0x1c4]
mov edx, dword [esp + 0x10]
xor ecx, ecx
cmp dword [ebp + 0xe8], ecx
je 0x308dbc
test byte [edx + 0xf], 0x10
je 0x308e63
cmp byte [edx + 0xe], 7
jne case.0x30945f.26
test byte [edx + 0xf], 0x10
je 0x308e63
cmp byte [edx + 0xe], 7
je 0x308e63
mov al, byte [edx + 0x1c]
test al, al
je 0x308e63
test byte [esi + 0x3d], 0x3c
je 0x308e63
mov esi, dword [esp + 0x10]
movsx edi, word [esi + 0xc]
movsx eax, al
mov dword [esp + 0x78], 1
call fcn.00216130
mov ecx, eax
sar ecx, 6
and ecx, 3
mov edx, 1
shl edx, cl
mov ecx, eax
sar ecx, 4
and ecx, 3
mov edi, 1
shl edi, cl
mov ecx, eax
sar ecx, 2
and ecx, 3
or edx, edi
mov edi, 1
shl edi, cl
mov ecx, eax
and ecx, 3
mov eax, 1
shl eax, cl
or edx, edi
or edx, eax
mov ecx, dword [edx*4 + 0x428da8]
lea edx, [esp + 0x11c]
push edx
lea eax, [esp + 0x11c]
mov dword [esp + 0xd0], ecx
push eax
mov ecx, esi
call fcn.00300f30
jmp 0x308e7c
cmp dword [esp + 0x68], ecx
mov dword [esp + 0x78], ecx
je 0x308ff1
mov esi, dword [esp + 0x10]
mov dword [esp + 0xcc], ecx
movsx ecx, byte [esi + 0xe]
mov dword [esp + 0x110], ecx
lea ecx, [esi + 0x10]
mov edx, ecx
mov eax, dword [edx]
mov dword [esp + 0x8c], eax
mov eax, dword [edx + 4]
mov dword [esp + 0x90], eax
mov eax, dword [edx + 8]
mov dword [esp + 0x94], eax
mov edx, dword [edx + 0xc]
mov dword [esp + 0x98], edx
movsx eax, word [esi + 0xc]
mov dword [esp + 0x148], eax
mov eax, dword [esi + 0xc]
mov edx, eax
shr edx, 0x1c
and edx, 1
cmp dword [esp + 0xcc], 1
mov dword [esp + 0x14c], edx
jne 0x308f7a
cmp dword [esp + 0x68], 0
jne 0x308f7a
mov esi, dword [esp + 0x10]
mov ebx, dword [esp + 0x1c4]
mov ecx, dword [ebp + 4]
mov edi, dword [ecx + 0xe8]
push 0xffffffffffffffff
shr eax, 0x18
push esi
and eax, 3
mov edx, dword [esp + eax*4 + 0x74]
push edx
push ebx
push ebp
call fcn.00305810
mov edx, eax
mov eax, dword [esp + 0x11c]
push eax
call fcn.00300f10
movzx eax, byte [esp + eax + 0x118]
lea ecx, [eax*4]
or ecx, eax
add ecx, ecx
add ecx, ecx
or ecx, eax
add ecx, ecx
push 0
add ecx, ecx
or ecx, eax
push edi
push edx
mov word [esi + 0xc], cx
push ebp
mov eax, 0xa
lea edx, [esp + 0x28]
mov ecx, esi
call fcn.00306a50
push eax
mov edi, ebp
call fcn.00307300
mov edx, dword [ebp + 4]
mov esi, dword [edx + 0xf0]
push ebx
lea ebx, [esp + 0x68]
mov eax, ebp
call fcn.00308490
mov esi, dword [esp + 0x10]
jmp 0x308fe9
mov al, byte [ecx]
cmp al, 2
je 0x308fcc
cmp al, 3
je 0x308fcc
cmp al, 0xa
je 0x308f8c
cmp al, 1
jne 0x308fda
mov eax, dword [esi + 0x1c]
shl eax, 0xb
sar eax, 0x1b
cmp eax, 1
je 0x308fb7
cmp eax, 4
je 0x308fb7
cmp eax, 7
je 0x308fb7
mov eax, dword [ecx]
and eax, 0xff
or eax, 0x100d00
mov dword [ecx], eax
mov byte [ecx], 3
jmp 0x308fda
mov edx, dword [ecx]
and edx, 0xff
or edx, 0x100d00
mov dword [ecx], edx
mov byte [ecx], 2
jmp 0x308fda
mov eax, dword [ecx]
and eax, 0xff
or eax, 0x100d00
mov dword [ecx], eax
cmp dword [esp + 0x68], 0
je 0x308fe5
mov byte [esi + 0x1c], 0xf
and byte [esi + 0xf], 0xef
mov edx, dword [esp + 0x10]
mov byte [esi + 0xe], 7
mov ecx, dword [esp + 0x18]
mov eax, dword [edx + 0x1c]
mov dword [esp + 0x5c], ecx
movsx ecx, word [edx + 4]
shl eax, 0xb
sar eax, 0x1b
cmp ecx, 0x68
mov dword [esp + 0x9c], eax
je 0x309035
cmp ecx, 0x66
je 0x309035
cmp ecx, 0x69
je 0x309035
lea edx, [ecx + ecx*4]
mov eax, dword [edx*4 + 0x49a330]
cmp eax, 0x32
jne 0x309052
mov dword [esp + 0x14], 0x30
jmp 0x309056
test eax, eax
je 0x30904d
cmp eax, 1
je 0x30904d
cmp eax, 8
je 0x30904d
cmp eax, 9
mov eax, 0x58
jne 0x309052
mov eax, 0x57
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x4c], eax
movsx eax, word [ecx + 4]
lea edx, [eax + eax*4]
mov edi, dword [edx*4 + 0x49a334]
xor ebx, ebx
xor esi, esi
xor eax, eax
cmp edi, ebx
mov dword [esp + 0x54], ebx
mov dword [esp + 0x50], esi
mov dword [esp + 0xd4], ebx
mov dword [esp + 0xc0], edi
mov dword [esp + 0x34], eax
jbe 0x3090d0
add ecx, 0x2c
jmp 0x3090a0
mov edx, dword [ecx]
and edx, 0x1e00000
cmp edx, 0xa00000
je 0x3090bc
add eax, 1
add ecx, 0x10
cmp eax, edi
jb 0x3090a0
jmp 0x3090c8
mov ebx, 1
mov dword [esp + 0xd4], ebx
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x34], eax
mov al, byte [ecx + 8]
test al, al
je 0x3090db
cmp al, 1
jne 0x3090e4
xor ebx, ebx
mov dword [esp + 0xd4], ebx
mov edi, 1
cmp word [ecx + 4], di
jne 0x30910c
cmp byte [ecx + 0x10], 8
jne 0x30910c
cmp byte [ecx + 0x20], 8
jne 0x30910c
mov dword [esp + 0x114], edi
mov dword [esp + 0x58], 0x14
jmp 0x309127
movsx ecx, al
xor edi, edi
mov eax, ebx
mov dword [esp + 0x114], edi
call fcn.00300c30
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x58], eax
mov dl, byte [ecx + 0x10]
cmp dl, 0xa
lea eax, [ecx + 0x10]
mov dword [esp + 0x60], 0
mov byte [esp + 0x23], dl
je 0x3091cb
test edi, edi
jne 0x3091cb
mov eax, dword [esp + 0x1c4]
test byte [eax + 0x3d], 0x3c
je 0x309184
mov ecx, dword [esp + 0x9c]
mov eax, ebx
call fcn.00300c30
mov dl, byte [esp + 0x23]
cmp dl, 7
mov dword [esp + 0x24], eax
jne 0x3091aa
mov dword [esp + 0x24], 0x15
mov dword [esp + 0x58], 0x15
jmp 0x3091d3
movsx eax, dl
cmp eax, 7
ja case.0x30918c.0
jmp dword [eax*4 + 0x30b170]
mov eax, 3
jmp 0x3091a6
mov eax, 0x15
jmp 0x3091a6
mov eax, 2
mov dword [esp + 0x24], eax
cmp eax, 3
jne 0x3091c0
mov eax, 4
cmp dword [esp + 0x58], eax
jne 0x3091d3
mov dword [esp + 0x24], eax
jmp 0x3091d3
cmp eax, 0x15
jne 0x3091d3
mov dword [esp + 0x58], eax
jmp 0x3091d3
mov ecx, dword [esp + 0x58]
mov dword [esp + 0x24], ecx
mov edi, dword [esp + 0x10]
movsx eax, byte [edi + 0x1c]
mov ecx, eax
and cl, 1
neg cl
sbb cl, cl
and ecx, 0xff
mov byte [esp + 0xc4], cl
mov ecx, eax
and cl, 2
neg cl
sbb cl, cl
and ecx, 0xff
mov byte [esp + 0xc5], cl
mov ecx, eax
and cl, 4
neg cl
sbb cl, cl
and al, 8
and ecx, 0xff
neg al
sbb al, al
mov byte [esp + 0xc6], cl
and eax, 0xff
mov byte [esp + 0xc7], al
mov eax, dword [esp + 0xc4]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x14]
cmp eax, 0x39
je 0x309248
cmp eax, 0x3a
jne 0x309262
cmp eax, 0x39
mov dword [esp + 0x28], 0xffffffff
jne 0x309262
mov eax, 1
mov dword [esp + 0x24], eax
mov dword [esp + 0x60], eax
mov eax, dword [edi + 0x1c]
mov ebx, eax
xor ecx, ecx
and ebx, 0x600000
cmp ebx, 0x200000
mov dword [esp + 0x1c], ecx
jne 0x309282
mov ecx, 3
jmp 0x30928d
cmp byte [edi + 8], 8
jne 0x309291
mov ecx, 2
mov dword [esp + 0x1c], ecx
test eax, 0x800000
mov dword [esp + 0x2c], ecx
je 0x3092a3
mov ebx, 0x40
jmp 0x3092e1
movsx eax, byte [edi + 0x1d]
cmp eax, 7
ja case.0x3092ac.0
jmp dword [eax*4 + 0x30b190]
mov eax, 1
jmp 0x3092df
mov eax, 2
jmp 0x3092df
mov eax, 4
jmp 0x3092df
mov eax, 8
jmp 0x3092df
mov eax, 0x10
jmp 0x3092df
mov eax, 0x20
jmp 0x3092df
xor eax, eax
mov ebx, eax
mov cx, word [edi + 4]
cmp cx, 0x5c
mov dword [esp + 0x30], ebx
jne 0x309394
movsx eax, byte [edi]
cmp eax, 0x13
ja case.0x3092ff.0
jmp dword [eax*4 + 0x30b1b0]
mov esi, 1
jmp 0x309390
mov esi, 2
jmp 0x309390
mov esi, 3
jmp 0x309390
mov esi, 4
jmp 0x309390
mov esi, 5
jmp 0x309390
mov esi, 6
jmp 0x309390
mov esi, 7
jmp 0x309390
mov esi, 8
jmp 0x309390
mov esi, 9
jmp 0x309390
mov esi, 0xa
jmp 0x309390
mov esi, 0xb
jmp 0x309390
mov esi, 0xc
jmp 0x309390
mov esi, 0xd
jmp 0x309390
mov esi, 0xe
jmp 0x309390
mov esi, 0xf
jmp 0x309390
mov esi, 0x10
jmp 0x309390
mov esi, 0x11
jmp 0x309390
mov esi, 0x12
jmp 0x309390
mov esi, 0x13
jmp 0x309390
xor esi, esi
mov dword [esp + 0x50], esi
movsx edi, cx
cmp edi, 0x17
je 0x3093eb
cmp edi, 0x18
je 0x3093eb
cmp edi, 0x19
je 0x3093eb
cmp edi, 0x2e
je 0x3093eb
cmp edi, 0x2f
je 0x3093eb
cmp edi, 0x33
je 0x3093eb
cmp edi, 0x34
je 0x3093eb
cmp edi, 0x31
je 0x3093eb
cmp edi, 0x49
je 0x3093eb
cmp edi, 0x59
je 0x3093eb
cmp edi, 0x37
je 0x3093eb
cmp edi, 0x46
je 0x3093eb
cmp edi, 0x47
je 0x3093eb
cmp edi, 0x6d
je 0x3093eb
cmp edi, 0x71
je 0x3093eb
cmp edi, 0x70
jne 0x309b96
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x1c4]
movsx eax, byte [ecx + 9]
push edx
push ebp
call fcn.00300d50
mov ecx, esi
xor ecx, eax
and ecx, 0xf
xor esi, ecx
mov ecx, dword [esp + 0x10]
movsx eax, byte [ecx]
shl eax, 0xc
xor eax, esi
and eax, 0xf000
xor esi, eax
movsx eax, byte [ecx + 1]
shl eax, 0x10
xor eax, esi
and eax, 0xf0000
xor esi, eax
movsx eax, byte [ecx + 2]
shl eax, 0x14
xor eax, esi
and eax, 0xf00000
xor esi, eax
lea eax, [edi - 0x17]
cmp eax, 0x5a
mov dword [esp + 0x50], esi
mov dword [esp + 0xa0], 1
ja case.0x30945f.26
movzx edx, byte [eax + 0x30b218]
jmp dword [edx*4 + 0x30b200]
mov eax, dword [ebp]
mov eax, dword [eax + 4]
mov ecx, dword [eax + 4]
push 0xa4
push ecx
call dword [eax]
test eax, eax
je 0x309482
call fcn.002bd340
jmp 0x309484
xor eax, eax
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0x14]
mov dword [eax + 0x14], edx
mov edx, dword [esp + 0x60]
mov dword [eax + 4], ecx
mov ecx, dword [esp + 0x58]
mov dword [eax + 8], esi
mov dword [eax + 0xc], 0
mov dword [eax + 0x18], edx
mov edx, dword [esp + 0x28]
mov dword [eax + 0x10], ecx
mov ecx, dword [esp + 0x1c]
mov dword [eax + 0x20], edx
mov edx, dword [esp + 0x24]
mov dword [eax + 0x24], ecx
mov dword [eax + 0x28], ebx
mov dword [eax + 0x1c], edx
mov dl, byte [eax + 0x69]
cmp dl, 1
mov dword [esp + 0x14], eax
jle 0x3094f4
mov ecx, dword [eax + 0x90]
mov ebx, dword [eax + 0x9c]
mov dword [esp + 0x40], ecx
mov ecx, dword [eax + 0x8c]
mov dword [esp + 0x44], ecx
mov ecx, dword [eax + 0x98]
mov dword [esp + 0x48], ecx
jmp 0x3094f8
mov ebx, dword [esp + 0x38]
mov ecx, dword [esp + 0x10]
mov di, word [ecx + 4]
cmp di, 0x71
jne 0x30950d
mov ecx, 0xff
jmp 0x309564
and esi, 0xf
lea ecx, [esi - 1]
cmp ecx, 0xf
ja case.0x30951f.8
movzx ecx, byte [ecx + 0x30b28c]
jmp dword [ecx*4 + 0x30b274]
mov ecx, 0xff
jmp 0x309545
mov ecx, 0xffff
jmp 0x309545
mov ecx, 0xff00ff
jmp 0x309545
mov ecx, 0xffffff
jmp 0x309545
or ecx, 0xffffffff
cmp di, 0x18
mov dword [esp + 0x3c], ecx
je 0x30955b
cmp di, 0x59
je 0x30955b
cmp di, 0x70
jne 0x309564
mov byte [esp + 0x3f], 0xff
mov ecx, dword [esp + 0x3c]
cmp dl, 1
jle 0x309593
mov edx, dword [esp + 0x40]
mov dword [eax + 0x9c], ebx
mov dword [eax + 0xa0], ecx
mov ecx, dword [esp + 0x44]
mov dword [eax + 0x90], edx
mov edx, dword [esp + 0x48]
mov dword [eax + 0x8c], ecx
mov dword [eax + 0x98], edx
mov dword [esp + 0x104], 1
jmp 0x309883
mov eax, dword [ebp]
mov eax, dword [eax + 4]
mov ecx, dword [eax + 4]
push 0xc0
push ecx
call dword [eax]
test eax, eax
je 0x3095bf
call fcn.002bd600
jmp 0x3095c1
xor eax, eax
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0x14]
mov dword [eax + 0x14], edx
mov edx, dword [esp + 0x60]
mov dword [eax + 4], ecx
mov ecx, dword [esp + 0x58]
mov dword [eax + 8], esi
mov dword [eax + 0xc], 0
mov dword [eax + 0x18], edx
mov edx, dword [esp + 0x28]
mov dword [eax + 0x10], ecx
mov ecx, dword [esp + 0x1c]
mov dword [eax + 0x20], edx
mov edx, dword [esp + 0x24]
mov dword [eax + 0x24], ecx
mov dword [eax + 0x28], ebx
mov dword [eax + 0x1c], edx
mov dl, byte [eax + 0x69]
cmp dl, 1
mov dword [esp + 0x14], eax
jle 0x30962d
mov ecx, dword [eax + 0x8c]
mov edi, dword [eax + 0x9c]
mov ebx, dword [eax + 0x90]
mov dword [esp + 0x44], ecx
mov ecx, dword [eax + 0x98]
mov dword [esp + 0x48], ecx
jmp 0x309635
mov ebx, dword [esp + 0x40]
mov edi, dword [esp + 0x38]
and esi, 0xf
lea ecx, [esi - 1]
cmp ecx, 0xf
ja case.0x309647.8
movzx ecx, byte [ecx + 0x30b2b4]
jmp dword [ecx*4 + 0x30b29c]
mov ecx, 0xff
jmp 0x30966d
mov ecx, 0xffff
jmp 0x30966d
mov ecx, 0xff00ff
jmp 0x30966d
mov ecx, 0xffffff
jmp 0x30966d
or ecx, 0xffffffff
cmp dl, 1
jle 0x309698
mov edx, dword [esp + 0x44]
mov dword [eax + 0x9c], edi
mov dword [eax + 0xa0], ecx
mov ecx, dword [esp + 0x48]
mov dword [eax + 0x90], ebx
mov dword [eax + 0x8c], edx
mov dword [eax + 0x98], ecx
mov dword [esp + 0x104], 1
jmp 0x309883
mov edx, dword [ebp]
mov eax, dword [edx + 4]
mov ecx, dword [eax + 4]
push 0xdc
push ecx
call dword [eax]
test eax, eax
je 0x3096c6
call fcn.002bd990
mov ecx, eax
jmp 0x3096c8
xor ecx, ecx
mov edx, dword [esp + 0x18]
mov eax, dword [esp + 0x14]
mov dword [ecx + 0x14], edx
mov edx, dword [esp + 0x60]
mov dword [ecx + 4], eax
mov eax, dword [esp + 0x58]
mov dword [ecx + 8], esi
mov dword [ecx + 0xc], 0
mov dword [ecx + 0x18], edx
mov edx, dword [esp + 0x28]
mov dword [ecx + 0x10], eax
mov eax, dword [esp + 0x1c]
mov dword [ecx + 0x20], edx
mov edx, dword [esp + 0x24]
mov dword [ecx + 0x24], eax
and esi, 0xf
mov dword [ecx + 0x28], ebx
mov eax, esi
mov dword [ecx + 0x1c], edx
mov dword [esp + 0x14], ecx
mov edi, 1
call fcn.00300e60
mov esi, edi
mov dword [esp + 0x104], esi
mov dword [esp + 0x108], esi
mov dword [esp + 0x10c], esi
mov esi, dword [esp + 0x38]
lea edx, [ecx + 0x9c]
lea ebx, [ebx]
test edi, edi
jl 0x309789
movsx ebx, byte [ecx + 0x69]
cmp edi, ebx
jge 0x309763
mov ebx, dword [edx - 0xc]
mov esi, dword [edx]
mov dword [esp + 0x40], ebx
mov ebx, dword [edx - 0x10]
mov dword [esp + 0x44], ebx
mov ebx, dword [edx - 4]
mov dword [esp + 0x48], ebx
test edi, edi
jl 0x309789
movsx ebx, byte [ecx + 0x69]
cmp edi, ebx
jge 0x309789
mov ebx, dword [esp + 0x40]
mov dword [edx], esi
mov dword [edx + 4], eax
mov dword [edx - 0xc], ebx
mov ebx, dword [esp + 0x44]
mov dword [edx - 0x10], ebx
mov ebx, dword [esp + 0x48]
mov dword [edx - 4], ebx
add edi, 1
add edx, 0x1c
cmp edi, 3
jbe 0x309740
mov dword [esp + 0x34], edi
jmp 0x309883
mov eax, dword [ebp]
lea edi, [esp + 0x24]
lea esi, [esp + 0x4c]
call fcn.00330a40
mov dword [esp + 0x14], eax
jmp 0x309883
mov eax, dword [ebp]
lea edi, [esp + 0x24]
lea esi, [esp + 0x4c]
call fcn.003309e0
mov bl, byte [eax + 0x69]
cmp bl, 1
mov dword [esp + 0x14], eax
jle 0x3097f0
mov edx, dword [eax + 0x98]
mov ecx, dword [eax + 0x9c]
mov esi, dword [eax + 0x90]
mov edi, dword [eax + 0x8c]
mov dword [esp + 0x48], edx
jmp 0x309800
mov esi, dword [esp + 0x40]
mov edi, dword [esp + 0x44]
mov edx, dword [esp + 0x48]
mov ecx, dword [esp + 0x38]
cmp bl, 1
jle 0x309827
mov dword [eax + 0x9c], ecx
mov dword [eax + 0xa0], 0xffff
mov dword [eax + 0x90], esi
mov dword [eax + 0x8c], edi
mov dword [eax + 0x98], edx
mov bl, byte [eax + 0x69]
cmp bl, 2
mov dword [esp + 0x104], 1
jle 0x309878
mov ecx, dword [eax + 0xb8]
mov edx, dword [eax + 0xb4]
mov esi, dword [eax + 0xac]
mov edi, dword [eax + 0xa8]
mov dword [eax + 0xb8], ecx
mov dword [eax + 0xbc], 0xff
mov dword [eax + 0xac], esi
mov dword [eax + 0xa8], edi
mov dword [esp + 0x48], edx
mov dword [eax + 0xb4], edx
mov dword [esp + 0x108], 1
mov eax, dword [esp + 0x10]
movsx eax, byte [eax + 6]
xor esi, esi
cmp eax, 0x10
lea edi, [eax + eax]
mov dword [esp + 0xe0], esi
mov dword [esp + 0xd8], esi
mov dword [esp + 0x1c], esi
mov dword [esp + 0xe4], 0x3210
jae 0x30994a
mov edx, dword [esp + 0x1c4]
mov ecx, eax
mov esi, 1
shl esi, cl
mov ebx, 3
and esi, dword [edx + 0xcc]
mov edx, dword [edx + 0xd8]
shr esi, cl
mov ecx, edi
shl ebx, cl
and edx, ebx
shr edx, cl
mov ecx, dword [esp + 0x1c4]
mov ecx, dword [ecx + eax*8 + 0x100]
mov dword [esp + 0xe0], ecx
mov ecx, dword [esp + 0x1c4]
mov ecx, dword [ecx + 0x94]
cmp byte [ecx + 0x18], 0
mov dword [esp + 0x1c], edx
jne 0x30991a
cmp edx, 3
jne 0x30991a
mov dword [esp + 0x1c], 0
mov edx, dword [esp + 0x1c4]
mov edx, dword [edx + 0xd4]
and edx, ebx
mov ecx, edi
shr edx, cl
mov ecx, dword [esp + 0x1c4]
mov dword [esp + 0xd8], edx
movzx edx, word [ecx + eax*2 + 0xdc]
mov dword [esp + 0xe4], edx
mov eax, dword [esp + 0x10]
movsx ecx, byte [eax + 7]
push ecx
push 0x3087c0
lea edi, [esp + 0x1a0]
call fcn.000b2370
mov edx, dword [ebp]
mov eax, dword [edx + 0x28]
add esp, 8
mov ebx, edi
call fcn.002be4b0
mov ecx, dword [ebp + 4]
mov ecx, dword [ecx + 0x34]
test ecx, ecx
je 0x30999e
mov edi, edi
mov edx, dword [ecx + 8]
cmp dword [edx + 0xc], eax
je 0x309990
mov ecx, dword [ecx]
test ecx, ecx
jne 0x309980
jmp 0x30999e
mov ecx, dword [ecx + 0x14]
test ecx, ecx
mov dword [esp + 0xc0], ecx
jne 0x3099e8
mov ecx, dword [esp + 0xe4]
mov edx, dword [esp + 0xd8]
push 0
push ecx
mov ecx, dword [esp + 0x24]
push edx
mov edx, dword [esp + 0xec]
push ecx
mov ecx, dword [esp + 0x20]
push edx
movsx edx, byte [ecx + 7]
push esi
push ecx
push edx
add ecx, 0x20
push ecx
push eax
mov eax, dword [esp + 0x1ec]
push 4
push 0x13
push 0x25
push eax
push ebp
call fcn.00303f20
mov dword [esp + 0xc0], eax
mov ecx, dword [esp + 0x10]
movsx edx, byte [ecx + 6]
push edx
push 0x3087cc
lea edi, [esp + 0x1a0]
call fcn.000b2370
mov eax, dword [ebp]
mov eax, dword [eax + 0x28]
add esp, 8
mov ebx, edi
call fcn.002be4b0
mov ecx, dword [ebp + 4]
mov ecx, dword [ecx + 0x34]
xor ebx, ebx
cmp ecx, ebx
je 0x309a3e
mov edi, edi
mov edx, dword [ecx + 8]
cmp dword [edx + 0xc], eax
je 0x309a30
mov ecx, dword [ecx]
cmp ecx, ebx
jne 0x309a20
jmp 0x309a3e
mov ecx, dword [ecx + 0x14]
cmp ecx, ebx
mov dword [esp + 0x9c], ecx
jne 0x309a87
mov ecx, dword [esp + 0xe4]
mov edx, dword [esp + 0xd8]
push ebx
push ecx
mov ecx, dword [esp + 0x24]
push edx
mov edx, dword [esp + 0xec]
push ecx
mov ecx, dword [esp + 0x20]
push edx
movsx edx, byte [ecx + 6]
push esi
push ecx
push edx
add ecx, 0x20
push ecx
push eax
mov eax, dword [esp + 0x1ec]
push 4
push 0x12
push 0x25
push eax
push ebp
call fcn.00303f20
mov dword [esp + 0x9c], eax
mov ecx, dword [esp + 0x18]
mov eax, 1
mov dword [esp + 0x18c], eax
mov dword [esp + 0x160], eax
mov eax, dword [ebp]
lea edi, [esp + 0x160]
lea esi, [esp + 0x180]
mov dword [esp + 0x190], ecx
mov dword [esp + 0x180], 0xb7
mov dword [esp + 0x188], ebx
mov dword [esp + 0x184], ebx
mov dword [esp + 0x194], ebx
mov dword [esp + 0x164], 0xff
mov dword [esp + 0x168], ebx
mov dword [esp + 0x16c], ebx
call fcn.00330980
cmp byte [eax + 0x69], bl
mov dword [esp + 0x48], eax
mov edx, 0x3020100
jle 0x309b26
mov ecx, dword [esp + 0xc0]
mov dword [eax + 0x80], edx
mov dword [eax + 0x84], 0xff
mov dword [eax + 0x74], ebx
mov dword [eax + 0x70], 0x13
mov dword [eax + 0x7c], ecx
cmp byte [eax + 0x69], 1
mov esi, 0xff
jle 0x309b5a
mov ecx, dword [esp + 0x9c]
mov dword [eax + 0x9c], edx
mov dword [eax + 0xa0], esi
mov dword [eax + 0x90], ebx
mov dword [eax + 0x8c], 0x12
mov dword [eax + 0x98], ecx
mov ecx, dword [esp + 0x14]
cmp byte [ecx + 0x69], bl
mov edi, 1
mov dword [esp + 0x38], edx
mov dword [esp + 0x3c], esi
mov dword [esp + 0x44], edi
mov dword [esp + 0x40], ebx
jle case.0x30945f.26
mov dword [ecx + 0x80], edx
mov dword [ecx + 0x84], esi
mov dword [ecx + 0x74], ebx
mov dword [ecx + 0x70], edi
mov dword [ecx + 0x7c], eax
jmp 0x309e39
cmp dword [esp + 0x14], 0xb6
jne 0x309cd1
mov ebx, dword [esp + 0x10]
mov edx, dword [ebp + 0x144]
movsx eax, byte [ebx + 0xe]
mov ecx, 1
push edx
mov dword [esp + 0x2c], 0xffffffff
mov dword [esp + 0x28], ecx
mov dword [esp + 0x64], ecx
call fcn.00302090
mov edx, esi
xor edx, eax
mov eax, dword [ebp]
and edx, 0x3f
xor esi, edx
mov dword [esp + 0x50], esi
lea edi, [esp + 0x24]
lea esi, [esp + 0x4c]
mov dword [esp + 0x58], ecx
call fcn.00330870
mov esi, eax
mov al, byte [ebx + 0xf]
push 0xffffffffffffffff
push ebx
and eax, 3
cmp dword [ebp + 0xe8], 0
je 0x309c1e
mov eax, dword [esp + eax*4 + 0x74]
mov ecx, dword [esp + 0x1cc]
push eax
push ecx
push ebp
call fcn.00305810
push eax
push ebp
call fcn.00306070
jmp 0x309c31
mov edx, dword [esp + eax*4 + 0x74]
mov eax, dword [esp + 0x1cc]
push edx
push eax
push ebp
call fcn.00305810
movsx ecx, word [ebx + 0xc]
mov dl, cl
and dl, 3
mov byte [esp + 0xc8], dl
mov edx, ecx
sar edx, 2
and dl, 3
mov byte [esp + 0xc9], dl
mov edx, ecx
sar edx, 4
sar ecx, 6
and dl, 3
and cl, 3
cmp byte [esi + 0x69], 0
mov byte [esp + 0xca], dl
mov byte [esp + 0xcb], cl
jle 0x309c9a
mov ecx, dword [esp + 0xc8]
mov dword [esi + 0x80], ecx
mov dword [esi + 0x84], 0xffffffff
mov dword [esi + 0x74], 0
mov dword [esi + 0x70], 0x14
mov dword [esi + 0x7c], eax
mov edx, dword [ebp]
mov eax, dword [edx + 0x28]
lea ecx, [ebp + 4]
push ecx
push 0xffffffffffffffff
push esi
push 0xffffffffffffffff
push 0xd8
mov ebx, 0x3087d8
call fcn.002be4b0
push eax
mov eax, dword [esp + 0x1dc]
push 0
push 1
push eax
mov eax, ebp
call fcn.00304930
jmp case.0x3089a1.0
cmp cx, 0x74
jne 0x309cef
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x1c4]
push ecx
mov ebx, ebp
call fcn.00305370
jmp 0x309e35
cmp cx, 0x5b
jne 0x309cfd
and esi, 0xffffffc6
or esi, 6
jmp 0x309d30
cmp cx, 0x66
jne 0x309d0b
and esi, 0xfffffff2
or esi, 2
jmp 0x309d30
cmp cx, 0x68
jne 0x309d19
and esi, 0xfffffff4
or esi, 4
jmp 0x309d30
cmp cx, 0x69
jne 0x309d27
and esi, 0xfffffff3
or esi, 3
jmp 0x309d30
cmp cx, 0x73
jne 0x309d34
or esi, 0x10
mov dword [esp + 0x50], esi
cmp cx, 0x66
je 0x309d46
cmp cx, 0x68
je 0x309d46
cmp cx, 0x69
jne 0x309d67
mov eax, dword [esp + 0x9c]
test eax, eax
je 0x309d60
cmp eax, 1
je 0x309d60
cmp eax, 8
je 0x309d60
cmp eax, 9
jne 0x309d67
or esi, 0x10
mov dword [esp + 0x50], esi
cmp cx, 0x4b
je 0x309da7
cmp cx, 0x4c
je 0x309da7
cmp cx, 1
jne 0x309dcd
cmp dl, 7
jne 0x309dcd
mov edx, dword [esp + 0x10]
cmp byte [edx + 0x20], 2
jne 0x309dcd
mov eax, 1
mov edx, 2
lea ecx, [esp + 0x4c]
mov dword [esp + 0x4c], 0x33
call fcn.00330b40
xor eax, eax
jmp 0x309dbf
mov eax, 1
mov edx, 2
lea ecx, [esp + 0x4c]
call fcn.00330b40
mov eax, 4
lea ecx, [esp + 0x4c]
mov edx, 1
call fcn.00330b40
mov eax, dword [esp + 0xc0]
cmp eax, 3
mov dword [esp + 0xa0], 0
ja case.0x30945f.26
jmp dword [eax*4 + 0x30b2c4]
mov eax, dword [ebp]
lea edi, [esp + 0x24]
lea esi, [esp + 0x4c]
call fcn.00330910
jmp 0x309e35
mov eax, dword [ebp]
lea edi, [esp + 0x24]
lea esi, [esp + 0x4c]
call fcn.00330870
jmp 0x309e35
mov eax, dword [ebp]
lea edi, [esp + 0x24]
lea esi, [esp + 0x4c]
call fcn.00330980
jmp 0x309e35
mov eax, dword [ebp]
lea edi, [esp + 0x24]
lea esi, [esp + 0x4c]
call fcn.003309e0
mov dword [esp + 0x14], eax
cmp dword [ebp + 0xec], 0
je 0x309ec8
mov eax, dword [esp + 0x4c]
cmp eax, 0x38
je 0x309e59
cmp eax, 0x33
je 0x309e59
cmp eax, 0x34
jne 0x309ec8
mov ebx, dword [esp + 0x10]
test byte [ebx + 0xf], 0x10
je 0x309ecc
mov eax, dword [esp + 0x4c]
cmp eax, 0x38
jne 0x309e87
cmp dword [esp + 0x28], 0xffff
jne case.0x30945f.26
mov eax, dword [ebx + 0x20]
xor eax, dword [ebx + 0x10]
test eax, 0xffffff00
jmp 0x309e9f
cmp eax, 0x33
je 0x309e91
cmp eax, 0x34
jne 0x309ea5
mov eax, dword [esp + 0x28]
cmp eax, 0xffffffff
je 0x309ea5
cmp eax, 0xff00ff00
jne case.0x30945f.26
mov eax, dword [ebx + 0xc4]
test eax, eax
je case.0x30945f.26
cmp word [eax + 4], 0x4d
jne case.0x30945f.26
mov dword [esp + 0x28], 0xffffffff
jmp 0x309ecc
mov ebx, dword [esp + 0x10]
movsx eax, word [ebx + 4]
mov edi, dword [esp + 0x4c]
cmp edi, 0x39
lea ecx, [eax + eax*4]
mov edx, dword [ecx*4 + 0x49a334]
mov dword [esp + 0x1c], edx
je 0x309ef0
cmp edi, 0x3a
jne 0x309fa7
mov ecx, dword [esp + 0xa0]
mov eax, dword [esp + 0x34]
mov esi, dword [esp + 0x14]
add eax, ecx
lea ecx, [esp + 0x38]
mov edx, esi
call fcn.00330af0
cmp edi, 0x39
mov eax, dword [ebp + 0x9c]
mov ecx, 0x3020100
mov edx, 0x15
mov dword [esp + 0x48], eax
mov dword [esp + 0x38], ecx
mov dword [esp + 0x3c], 0xffffffff
mov dword [esp + 0x44], edx
mov dword [esp + 0x40], 0
jne 0x309f6b
cmp byte [esi + 0x69], 1
jle 0x309f8e
mov dword [esi + 0x9c], ecx
mov dword [esi + 0xa0], 0xffffffff
mov dword [esi + 0x90], 0
mov dword [esi + 0x8c], edx
mov dword [esi + 0x98], eax
jmp 0x309f8e
cmp byte [esi + 0x69], 0
jle 0x309f8e
mov dword [esi + 0x80], ecx
mov dword [esi + 0x84], 0xffffffff
mov dword [esi + 0x74], 0
mov dword [esi + 0x70], edx
mov dword [esi + 0x7c], eax
sub dword [esp + 0x1c], 1
mov dword [ebp + 0x9c], esi
mov dword [esp + 0x28], 0xffffffff
mov dword [esp + 0x24], edx
jmp 0x309fab
mov esi, dword [esp + 0x14]
cmp edi, 0x7c
jne 0x309fbb
mov dword [esp + 0x154], 1
xor edi, edi
cmp dword [esp + 0x1c], edi
jbe 0x30a15d
mov edx, dword [esp + 0xa0]
lea eax, [edx*4]
lea esi, [ebx + 0x20]
mov dword [esp + 0x34], eax
lea esp, [esp]
mov ecx, dword [esp + 0xa0]
mov edx, dword [esp + 0x14]
lea eax, [ecx + edi]
lea ecx, [esp + 0x38]
call fcn.00330af0
mov edx, dword [esi]
mov eax, dword [esp + 0x1c4]
push edi
push ebx
push edx
push eax
push ebp
call fcn.00305810
test eax, eax
mov dword [esp + 0x48], eax
je case.0x30945f.26
movsx eax, word [esi + 0xc]
mov edx, eax
sar edx, 2
and dl, 3
mov byte [esp + 0xb5], dl
mov edx, eax
mov cl, al
sar edx, 4
sar eax, 6
and dl, 3
and al, 3
and cl, 3
mov byte [esp + 0xb6], dl
mov edx, dword [esp + 0x34]
cmp dword [esp + edx + 0x100], 0
mov byte [esp + 0xb4], cl
mov byte [esp + 0xb7], al
mov eax, dword [esp + 0xb4]
mov dword [esp + 0x38], eax
jne 0x30a0b8
mov eax, edx
cmp dword [esp + eax + 0x150], 0
jne 0x30a098
movsx eax, word [ebx + 4]
lea ecx, [edi + eax*4]
add ecx, eax
mov eax, dword [ecx*4 + 0x49a338]
test eax, eax
jne 0x30a08d
movsx eax, byte [ebx + 0x1c]
call fcn.00300ec0
mov dword [esp + 0x3c], eax
jmp 0x30a0b8
mov edx, dword [esp + 0x28]
movzx ecx, cl
mov eax, ecx
shl eax, 8
or eax, ecx
shl eax, 8
or eax, ecx
shl eax, 8
or eax, ecx
mov dword [esp + 0x3c], edx
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x1c4]
test byte [eax + 0x3d], 0x3c
je 0x30a101
cmp dword [esp + 0x114], 0
je 0x30a0d9
mov dword [esp + 0x44], 0x14
jmp 0x30a0f2
mov ecx, dword [esi + 0xc]
mov eax, dword [esp + 0xd4]
shl ecx, 0xb
sar ecx, 0x1b
call fcn.00300c30
mov dword [esp + 0x44], eax
cmp byte [esi], 7
jne 0x30a10d
mov dword [esp + 0x44], 0x15
jmp 0x30a10d
mov ecx, dword [esi]
push ecx
call fcn.00300cc0
mov dword [esp + 0x44], eax
movsx edx, byte [ebx + 8]
mov eax, dword [esp + 0x1c4]
push edx
push eax
mov edx, esi
call fcn.00302180
mov edx, dword [esp + 0xa0]
mov dword [esp + 0x40], eax
lea eax, [edx + edi]
mov edx, dword [esp + 0x14]
lea ecx, [esp + 0x38]
call fcn.00330aa0
test eax, eax
je case.0x30945f.26
add dword [esp + 0x34], 4
add edi, 1
add esi, 0x10
cmp edi, dword [esp + 0x1c]
jb 0x309fe0
mov esi, dword [esp + 0x14]
lea eax, [ebx + 0x10]
mov ecx, eax
mov eax, dword [ecx]
mov dword [esp + 0x7c], eax
mov edx, dword [ecx + 4]
mov dword [esp + 0x80], edx
mov edx, dword [ecx + 8]
mov dword [esp + 0x84], edx
mov ecx, dword [ecx + 0xc]
test ecx, 0x1000000
mov dword [esp + 0x88], ecx
je 0x30a19f
mov ecx, dword [esp + 0x1c4]
test byte [ecx + 0x3d], 0x3c
je case.0x30945f.26
mov dl, byte [ebx + 0xf]
and edx, 3
cmp dword [esp + 0x68], 0
mov dword [esp + 0x34], edx
je 0x30a2af
cmp dword [esp + 0x78], 0
jne 0x30a2af
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x24]
push ecx
mov ecx, dword [esp + 0x18]
push edx
push ecx
push eax
mov eax, ebp
call fcn.00304d90
mov edx, dword [ebp + 4]
mov edi, dword [esp + 0x1c4]
mov esi, dword [edx + 0xe8]
push edi
lea ebx, [esp + 0x68]
mov eax, ebp
call fcn.00308490
mov esi, dword [esp + 0x10]
mov eax, dword [esp + 0x7c]
push 0xffffffffffffffff
push esi
push eax
push edi
push ebp
call fcn.00305810
mov cl, byte [esp + 0x110]
mov byte [esi + 0xe], cl
mov edx, dword [esp + 0x8c]
lea ecx, [esi + 0x10]
mov dword [ecx], edx
mov edx, dword [esp + 0x90]
mov dword [ecx + 4], edx
mov edx, dword [esp + 0x94]
mov dword [ecx + 8], edx
mov edx, dword [esp + 0x98]
mov dword [ecx + 0xc], edx
mov ecx, dword [esp + 0x14c]
shl ecx, 0x1c
xor ecx, dword [esi + 0xc]
mov dword [esp + 0x14], eax
and ecx, 0x10000000
xor dword [esi + 0xc], ecx
mov edx, dword [esp + 0x8c]
mov ecx, dword [esp + 0x90]
mov dword [esp + 0x7c], edx
mov edx, dword [esp + 0x94]
mov dword [esp + 0x80], ecx
mov ecx, dword [esp + 0x98]
mov dword [esp + 0x84], edx
mov dword [esp + 0x88], ecx
mov edx, dword [eax + 0x24]
mov dword [esp + 0x2c], edx
mov edx, dword [eax + 0x28]
mov eax, dword [eax + 0x1c]
mov dword [esp + 0x24], eax
movsx eax, cl
mov dword [esp + 0x30], edx
call fcn.00300ec0
mov ebx, esi
mov esi, dword [esp + 0x14]
mov dword [esp + 0x28], eax
mov dl, byte [ebx + 0xe]
cmp dl, 7
je 0x30a574
cmp byte [ebx + 0x10], 0xa
je 0x30a574
cmp dword [ebp + 0xec], 0
je 0x30a317
mov eax, dword [esp + 0x4c]
cmp eax, 0x34
je case.0x30945f.26
cmp eax, 0x33
je case.0x30945f.26
cmp eax, 0x38
je case.0x30945f.26
mov ecx, dword [esp + 0x7c]
cmp cl, 1
jne 0x30a31b
mov edi, dword [ebp + 0x44]
mov eax, ecx
sar eax, 8
lea esi, [eax + eax*4]
cmp dword [edi + esi*4 + 8], 0
je case.0x30945f.26
mov esi, dword [ebp + 0xf0]
cmp dword [esi + eax*4], 0xffffffff
je 0x30a31b
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x1ac
ret 8
mov ecx, dword [esp + 0x7c]
mov eax, dword [esp + 0x1c4]
test byte [eax + 0x3d], 0x3c
je 0x30a393
cmp cl, 7
jne 0x30a334
mov ebx, 0x15
jmp 0x30a39b
mov eax, dword [esp + 0x88]
shl eax, 0xb
sar eax, 0x1b
cmp eax, 0xa
ja case.0x30a346.1
jmp dword [eax*4 + 0x30b2d4]
mov ebx, 0xc
jmp 0x30a39b
mov ebx, 0xa
jmp 0x30a39b
mov ebx, 8
jmp 0x30a39b
mov ebx, 0xb
jmp 0x30a39b
mov ebx, 9
jmp 0x30a39b
mov ebx, 7
jmp 0x30a39b
mov ebx, 2
jmp 0x30a39b
mov ebx, 3
jmp 0x30a39b
mov ebx, 4
jmp 0x30a39b
mov ebx, 0xe
jmp 0x30a39b
push ecx
call fcn.00300cc0
mov ebx, eax
mov eax, dword [ebp + 0x144]
mov ecx, dword [esp + 0x5c]
push eax
mov dword [esp + 0x144], ecx
movsx eax, dl
xor ecx, ecx
mov dword [esp + 0x13c], ecx
call fcn.00302090
mov edx, dword [esp + 0x28]
and eax, 0x3f
cmp byte [esp + 0x7c], 1
mov dword [esp + 0x134], eax
mov eax, dword [ebp]
mov dword [esp + 0x13c], ebx
mov dword [esp + 0x144], ecx
mov dword [esp + 0x120], ebx
mov dword [esp + 0x124], edx
mov dword [esp + 0x128], ecx
mov dword [esp + 0x12c], ecx
lea esi, [esp + 0x130]
lea edi, [esp + 0x120]
jne 0x30a422
mov dword [esp + 0x130], 0xbc
call fcn.00330980
mov esi, eax
jmp 0x30a47e
mov dword [esp + 0x130], 0x96
call fcn.003309e0
mov ecx, dword [esp + 0x7c]
mov edx, dword [esp + 0x1c4]
push 0xffffffffffffffff
mov esi, eax
mov eax, dword [esp + 0x14]
push eax
push ecx
push edx
push ebp
call fcn.00305810
cmp byte [esi + 0x69], 2
jle 0x30a47e
mov ecx, dword [esp + 0x28]
mov dword [esi + 0xb8], 0x3020100
mov dword [esi + 0xbc], ecx
mov dword [esi + 0xac], 0
mov dword [esi + 0xa8], ebx
mov dword [esi + 0xb4], eax
cmp dword [ebp + 0xe8], 0
push 0xffffffffffffffff
je 0x30a4ae
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + eax*4 + 0x70]
push edx
mov edx, dword [esp + 0x1cc]
push ecx
push edx
push ebp
call fcn.00305810
push eax
push ebp
call fcn.00306070
jmp 0x30a4ca
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + ecx*4 + 0x70]
push eax
mov eax, dword [esp + 0x1cc]
push edx
push eax
push ebp
call fcn.00305810
mov ecx, dword [esp + 0x10]
movsx ecx, word [ecx + 0xc]
mov dl, cl
and dl, 3
mov edi, eax
mov byte [esp + 0xb8], dl
mov eax, ecx
mov edx, ecx
sar eax, 2
sar edx, 4
sar ecx, 6
and al, 3
and dl, 3
and cl, 3
cmp byte [esi + 0x69], 0
mov byte [esp + 0xb9], al
mov byte [esp + 0xba], dl
mov byte [esp + 0xbb], cl
jle 0x30a538
mov eax, dword [esp + 0xb8]
mov ecx, dword [esp + 0x28]
mov dword [esi + 0x80], eax
mov dword [esi + 0x84], ecx
mov dword [esi + 0x74], 0
mov dword [esi + 0x70], 0x14
mov dword [esi + 0x7c], edi
cmp byte [esi + 0x69], 1
jle 0x30a56c
mov edx, dword [esp + 0x28]
mov eax, dword [esp + 0x14]
mov dword [esi + 0x9c], 0x3020100
mov dword [esi + 0xa0], edx
mov dword [esi + 0x90], 0
mov dword [esi + 0x8c], ebx
mov dword [esi + 0x98], eax
mov ebx, dword [esp + 0x10]
mov dword [esp + 0x14], esi
mov eax, dword [ebx + 0xc]
test eax, 0x10000000
je 0x30a923
shr eax, 0x1a
and eax, 3
cmp dword [ebp + 0xe8], 0
mov dword [esp + 0x68], eax
je 0x30a599
mov eax, esi
jmp 0x30a5a0
push esi
push ebp
call fcn.00306070
mov cl, byte [ebx + 0xe]
cmp cl, 7
mov dword [esp + 0x1c], eax
je 0x30a78d
mov eax, dword [ebp + 0x144]
mov edx, dword [esp + 0x5c]
push eax
mov dword [esp + 0x144], edx
movsx eax, cl
xor edx, edx
mov dword [esp + 0x134], 0x96
mov dword [esp + 0x13c], edx
call fcn.00302090
mov ecx, dword [esp + 0x58]
and eax, 0x3f
mov dword [esp + 0x134], eax
mov eax, dword [ebp + 0xe8]
neg eax
sbb eax, eax
and al, 0xee
mov dword [esp + 0x13c], ecx
mov ecx, dword [esp + 0x28]
lea edi, [esp + 0x120]
lea esi, [esp + 0x130]
mov dword [esp + 0x144], edx
mov dword [esp + 0x124], ecx
add eax, 0x14
mov dword [esp + 0x120], eax
mov eax, dword [ebp]
mov dword [esp + 0x128], edx
mov dword [esp + 0x12c], edx
call fcn.003309e0
cmp dword [ebp + 0xe8], 0
mov edx, dword [esp + 0x34]
mov ecx, dword [esp + 0x1c4]
push 0xffffffffffffffff
push ebx
mov esi, eax
mov eax, dword [esp + edx*4 + 0x74]
push eax
push ecx
push ebp
je 0x30a66d
call fcn.00305810
push eax
push ebp
call fcn.00306070
jmp 0x30a672
call fcn.00305810
movsx ecx, word [ebx + 0xc]
mov dl, cl
and dl, 3
mov edi, eax
mov byte [esp + 0xbc], dl
mov eax, ecx
mov edx, ecx
sar eax, 2
sar edx, 4
sar ecx, 6
and al, 3
and dl, 3
and cl, 3
cmp byte [esi + 0x69], 0
mov byte [esp + 0xbd], al
mov byte [esp + 0xbe], dl
mov byte [esp + 0xbf], cl
jle 0x30a6dc
mov eax, dword [esp + 0xbc]
mov ecx, dword [esp + 0x28]
mov dword [esi + 0x80], eax
mov dword [esi + 0x84], ecx
mov dword [esi + 0x74], 0
mov dword [esi + 0x70], 0x14
mov dword [esi + 0x7c], edi
mov eax, dword [ebp + 0xe8]
test eax, eax
mov ecx, dword [esp + 0x14]
jne 0x30a6ee
mov ecx, dword [esp + 0x1c]
neg eax
sbb eax, eax
and al, 0xee
add eax, 0x14
cmp byte [esi + 0x69], 1
jle 0x30a727
mov edx, dword [esp + 0x28]
mov dword [esi + 0x9c], 0x3020100
mov dword [esi + 0xa0], edx
mov dword [esi + 0x90], 0
mov dword [esi + 0x8c], eax
mov dword [esi + 0x98], ecx
mov eax, dword [esp + 0x68]
mov ecx, dword [esp + eax*4 + 0x6c]
mov edx, dword [esp + 0x1c4]
push 0xffffffffffffffff
push ebx
push ecx
push edx
push ebp
call fcn.00305810
mov ecx, dword [ebp + 0xe8]
neg ecx
sbb ecx, ecx
and ecx, 0xffffffee
add ecx, 0x14
cmp byte [esi + 0x69], 2
jle 0x30a781
mov edx, dword [esp + 0x28]
mov dword [esi + 0xb8], 0x3020100
mov dword [esi + 0xbc], edx
mov dword [esi + 0xac], 0
mov dword [esi + 0xa8], ecx
mov dword [esi + 0xb4], eax
mov dword [esp + 0x1c], esi
mov esi, dword [esp + 0x14]
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x28]
cmp ecx, 0xffffffff
je 0x30a8da
test ecx, ecx
je 0x30a8c0
mov eax, dword [esp + 0x5c]
mov dword [esp + 0xf8], eax
mov eax, dword [ebp + 0xe8]
xor ecx, ecx
neg eax
sbb eax, eax
and al, 0xee
lea edi, [esp + 0xa4]
lea esi, [esp + 0xe8]
mov dword [esp + 0xe8], 0x40
mov dword [esp + 0xf0], ecx
mov dword [esp + 0xec], ecx
mov dword [esp + 0xfc], ecx
add eax, 0x14
mov dword [esp + 0xf4], eax
mov dword [esp + 0xa4], eax
mov eax, dword [ebp]
mov dword [esp + 0xa8], 0xffffffff
mov dword [esp + 0xac], ecx
mov dword [esp + 0xb0], ecx
call fcn.00330980
mov ecx, dword [esp + 0x68]
mov edx, dword [esp + ecx*4 + 0x6c]
push 0xffffffffffffffff
push ebx
mov esi, eax
mov eax, dword [esp + 0x1cc]
push edx
push eax
push ebp
call fcn.00305810
mov ecx, dword [ebp + 0xe8]
mov edx, dword [esp + 0x28]
neg ecx
sbb ecx, ecx
and ecx, 0xffffffee
add ecx, 0x14
cmp byte [esi + 0x69], 0
not edx
jle case.0x30945f.26
mov edi, 0x3020100
mov dword [esi + 0x80], edi
mov dword [esi + 0x84], edx
xor edx, edx
mov dword [esi + 0x74], edx
mov dword [esi + 0x70], ecx
mov dword [esi + 0x7c], eax
mov eax, dword [ebp + 0xe8]
neg eax
sbb eax, eax
and al, 0xee
add eax, 0x14
cmp byte [esi + 0x69], 1
jle case.0x30945f.26
mov ecx, dword [esp + 0x28]
mov dword [esi + 0x9c], edi
mov dword [esi + 0xa0], ecx
mov dword [esi + 0x90], edx
mov edx, dword [esp + 0x1c]
mov dword [esi + 0x8c], eax
mov dword [esp + 0x1c], esi
mov eax, dword [esp + 0x1c]
mov dword [esi + 0x98], edx
mov esi, dword [esp + 0x14]
jmp 0x30a8da
mov eax, dword [esp + 0x68]
mov ecx, dword [esp + eax*4 + 0x6c]
mov edx, dword [esp + 0x1c4]
push 0xffffffffffffffff
push ebx
push ecx
push edx
push ebp
call fcn.00305810
cmp dword [ebp + 0xec], 0
je 0x30a8ff
mov ecx, dword [esp + 0x4c]
cmp ecx, 0x38
je 0x30a8f6
cmp ecx, 0x33
je 0x30a8f6
cmp ecx, 0x34
jne 0x30a8ff
mov dword [esp + 0xdc], eax
jmp 0x30a923
mov ecx, dword [ebp + 0xe8]
mov edx, dword [esp + 0x68]
neg ecx
sbb ecx, ecx
push 0xffffffffffffffff
and ecx, 0xffffffee
add ecx, 0x14
push ecx
push eax
mov eax, dword [esp + edx*4 + 0x78]
push eax
mov eax, ebp
call fcn.00304d90
mov edi, dword [esp + 0x28]
cmp edi, 0xffffffff
je 0x30aafc
test edi, edi
je 0x30ab00
mov dl, byte [ebx + 0x10]
cmp dl, 0xa
je 0x30aafc
mov eax, dword [esp + 0x7c]
cmp al, 1
jne 0x30a964
sar eax, 8
lea ecx, [eax + eax*4]
mov eax, dword [ebp + 0x44]
cmp dword [eax + ecx*4 + 8], 0
je 0x30aafc
mov eax, dword [esp + 0x7c]
cmp dl, 2
je 0x30a96e
cmp dl, 3
jne 0x30a9b7
test byte [ebx + 0x1f], 1
je 0x30a979
mov eax, dword [ebx + 0x18]
jmp 0x30a97b
xor eax, eax
mov ecx, dword [ebx + 0x10]
sar ecx, 8
add ecx, eax
movsx eax, dl
cmp eax, 2
je 0x30a990
cmp eax, 3
jne 0x30a9b3
cmp byte [ebp + eax*8 + 0x40], 0
jne 0x30a9b3
mov edx, dword [ebp + eax*8 + 0x3c]
call fcn.0030ccb0
test eax, eax
je 0x30a9b3
mov eax, dword [eax + 0xc]
movsx eax, byte [eax + 4]
test eax, eax
jne 0x30aafc
mov eax, dword [esp + 0x7c]
mov ecx, dword [esp + 0x1c4]
test byte [ecx + 0x3d], 0x3c
je 0x30a9f0
cmp al, 7
jne 0x30a9cf
mov ebx, 0x15
jmp 0x30a9f8
cmp al, 8
jne 0x30a9da
mov ebx, 0x14
jmp 0x30a9f8
mov ecx, dword [esp + 0x88]
shl ecx, 0xb
sar ecx, 0x1b
xor eax, eax
call fcn.00300c30
jmp 0x30a9f6
push eax
call fcn.00300cc0
mov ebx, eax
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x7c]
mov ecx, dword [esp + 0x1c4]
push 0xffffffffffffffff
push edx
push eax
push ecx
push ebp
call fcn.00305810
mov edx, dword [esp + 0x5c]
mov dword [esp + 0x1b8], eax
mov eax, dword [eax + 0x20]
or eax, dword [esp + 0x28]
xor ecx, ecx
mov dword [esp + 0xa8], eax
mov eax, dword [ebp]
lea edi, [esp + 0xa4]
lea esi, [esp + 0xe8]
mov dword [esp + 0xf8], edx
mov dword [esp + 0xe8], 0x40
mov dword [esp + 0xf0], ecx
mov dword [esp + 0xec], ecx
mov dword [esp + 0xf4], ebx
mov dword [esp + 0xfc], ecx
mov dword [esp + 0xa4], ebx
mov dword [esp + 0xac], ecx
mov dword [esp + 0xb0], ecx
call fcn.00330980
mov ecx, dword [esp + 0x28]
not ecx
and ecx, dword [esp + 0xa8]
cmp byte [eax + 0x69], 0
jle case.0x30945f.26
mov esi, dword [esp + 0x1b8]
mov edx, 0x3020100
mov dword [eax + 0x80], edx
mov dword [eax + 0x84], ecx
xor ecx, ecx
mov dword [eax + 0x74], ecx
mov dword [eax + 0x70], ebx
mov dword [eax + 0x7c], esi
cmp byte [eax + 0x69], 1
jle case.0x30945f.26
mov dword [eax + 0x9c], edx
mov edx, dword [esp + 0x28]
mov dword [eax + 0xa0], edx
mov dword [eax + 0x90], ecx
mov ecx, dword [esp + 0x14]
mov dword [eax + 0x8c], ebx
mov ebx, dword [esp + 0x10]
mov dword [eax + 0x98], ecx
mov dword [esp + 0x14], eax
mov esi, eax
jmp 0x30ab22
test edi, edi
jne 0x30ab22
cmp byte [ebx + 0x10], 0xa
je 0x30ab22
mov edx, dword [esp + 0x7c]
mov eax, dword [esp + 0x1c4]
push 0xffffffffffffffff
push ebx
push edx
push eax
push ebp
call fcn.00305810
mov esi, eax
mov dword [esp + 0x14], esi
cmp dword [esp + 0x78], 0
je 0x30af76
mov cl, byte [esp + 0x110]
mov byte [ebx + 0xe], cl
or byte [ebx + 0xf], 0x10
cmp dword [esp + 0xcc], 1
je 0x30af4c
mov edx, dword [esp + 0x28]
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x7c]
push edx
push eax
push esi
push ecx
mov eax, ebp
call fcn.00304d90
xor eax, eax
mov dword [esp + 0x78], eax
jmp 0x30ab70
cmp byte [esp + eax + 0x11c], 0xff
jne 0x30af0d
mov edx, dword [esp + 0x78]
movzx eax, byte [esp + edx + 0x118]
mov esi, dword [esp + 0x10]
lea ecx, [eax*4]
or ecx, eax
mov ebx, dword [esp + 0x1c4]
add ecx, ecx
add ecx, ecx
or ecx, eax
add ecx, ecx
add ecx, ecx
or ecx, eax
mov word [esi + 0xc], cx
mov al, byte [esi + 0xf]
mov edx, dword [ebp + 4]
mov edi, dword [edx + 0xe8]
push 0xffffffffffffffff
push esi
and eax, 3
mov ecx, dword [esp + eax*4 + 0x74]
push ecx
push ebx
push ebp
call fcn.00305810
push 0
push edi
push eax
push ebp
mov eax, 0xa
lea edx, [esp + 0x28]
mov ecx, esi
call fcn.00306a50
push eax
mov edi, ebp
call fcn.00307300
mov edx, dword [ebp + 4]
mov esi, dword [edx + 0xf0]
push ebx
lea ebx, [esp + 0x68]
mov eax, ebp
call fcn.00308490
mov edi, dword [esp + 0x10]
movsx esi, word [edi + 0xc]
mov eax, dword [esp + 0x148]
call fcn.00216050
movsx ecx, byte [edi + 0x1c]
and eax, ecx
call fcn.00300ec0
mov edx, dword [esp + 0x18]
mov ebx, eax
xor eax, eax
mov dword [esp + 0xf0], eax
mov dword [esp + 0xec], eax
mov dword [esp + 0xfc], eax
mov dword [esp + 0xac], eax
mov dword [esp + 0xb0], eax
mov al, byte [esp + 0x8c]
cmp al, 2
mov dword [esp + 0xf8], edx
mov dword [esp + 0xe8], 0x40
mov dword [esp + 0xa8], 0xffffffff
je 0x30aca3
cmp al, 3
je 0x30aca3
cmp al, 1
jne 0x30ad7a
mov ecx, dword [esp + 0x7c]
mov edx, dword [esp + 0x1c4]
push 0xffffffffffffffff
mov eax, edi
push eax
push ecx
push edx
push ebp
call fcn.00305810
mov ecx, dword [esp + 0xa4]
push ebx
push ecx
push eax
jmp 0x30ad6b
mov eax, dword [esp + 0x24]
mov dword [esp + 0xf4], eax
mov dword [esp + 0xa4], eax
mov eax, dword [ebp]
lea edi, [esp + 0xa4]
lea esi, [esp + 0xe8]
call fcn.00330980
mov ecx, dword [esp + 0x7c]
mov edx, dword [esp + 0x1c4]
push 0xffffffffffffffff
mov esi, eax
mov eax, dword [esp + 0x14]
push eax
push ecx
push edx
push ebp
call fcn.00305810
cmp byte [esi + 0x69], 0
jle case.0x30945f.26
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x10]
mov dword [esi + 0x80], 0x3020100
mov dword [esi + 0x84], ebx
mov dword [esi + 0x74], 0
push 0xffffffffffffffff
mov dword [esi + 0x70], ecx
mov ecx, dword [esp + 0x1c8]
push edx
mov dword [esi + 0x7c], eax
mov eax, dword [esp + 0x94]
push eax
push ecx
mov edi, ebx
push ebp
not edi
call fcn.00305810
cmp byte [esi + 0x69], 1
jle case.0x30945f.26
mov ecx, dword [esp + 0x24]
mov dword [esi + 0x9c], 0x3020100
mov dword [esi + 0xa0], edi
push 0xffffffffffffffff
mov dword [esi + 0x90], 0
push ecx
mov dword [esi + 0x8c], ecx
mov dword [esi + 0x98], eax
push esi
mov edx, dword [esp + 0x98]
mov eax, ebp
push edx
call fcn.00304d90
mov eax, 0x14
mov dword [esp + 0xf4], eax
mov dword [esp + 0xa4], eax
mov eax, dword [ebp]
lea edi, [esp + 0xa4]
lea esi, [esp + 0xe8]
call fcn.00330980
mov ecx, dword [esp + 0x7c]
mov edx, dword [esp + 0x1c4]
push 0xffffffffffffffff
mov esi, eax
mov eax, dword [esp + 0x14]
push eax
push ecx
push edx
push ebp
call fcn.00305810
push eax
push ebp
call fcn.00306070
mov ecx, dword [eax + 0x24]
mov edi, dword [eax + 0x1c]
mov edx, dword [eax + 0x28]
mov dword [eax + 0x20], ebx
mov dword [eax + 0x24], ecx
mov dword [eax + 0x28], edx
mov dword [eax + 0x1c], edi
mov cl, byte [eax + 0x69]
test cl, cl
mov dword [esp + 0xa4], edi
mov dword [esp + 0xa8], ebx
jle 0x30ae0f
mov edx, dword [eax + 0x80]
mov dword [esp + 0x38], edx
mov edx, dword [eax + 0x74]
mov dword [esp + 0x40], edx
mov edx, dword [eax + 0x70]
mov dword [esp + 0x44], edx
mov edx, dword [eax + 0x7c]
mov dword [esp + 0x48], edx
test cl, cl
mov dword [esp + 0x3c], ebx
jle case.0x30945f.26
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x40]
mov dword [eax + 0x80], ecx
mov ecx, dword [esp + 0x44]
mov dword [eax + 0x84], ebx
mov dword [eax + 0x74], edx
mov edx, dword [esp + 0x48]
mov dword [eax + 0x70], ecx
mov dword [eax + 0x7c], edx
cmp byte [esi + 0x69], 0
jle case.0x30945f.26
mov edx, dword [esp + 0x1c4]
mov dword [esi + 0x80], 0x3020100
mov dword [esi + 0x84], ebx
mov dword [esi + 0x74], 0
mov dword [esi + 0x70], 0x14
mov dword [esi + 0x7c], eax
mov eax, dword [esp + 0x10]
push 0xffffffffffffffff
push eax
mov eax, dword [eax + 0xc]
shr eax, 0x1a
and eax, 3
mov ecx, dword [esp + eax*4 + 0x74]
push ecx
push edx
mov edi, ebx
push ebp
not edi
call fcn.00305810
cmp byte [esi + 0x69], 1
jle case.0x30945f.26
mov ecx, dword [esp + 0x10]
mov dword [esi + 0x9c], 0x3020100
mov dword [esi + 0xa0], edi
mov dword [esi + 0x90], 0
mov dword [esi + 0x8c], 0x14
mov dword [esi + 0x98], eax
mov edx, dword [ecx + 0xc]
mov eax, dword [esp + 0xa4]
push ebx
push eax
shr edx, 0x1a
and edx, 3
mov eax, dword [esp + edx*4 + 0x74]
push esi
push eax
mov eax, ebp
call fcn.00304d90
mov ecx, dword [ebp + 4]
mov edx, dword [esp + 0x1c4]
mov esi, dword [ecx + 0xf0]
push edx
lea ebx, [esp + 0x68]
mov eax, ebp
call fcn.00308490
mov eax, dword [esp + 0x78]
mov ebx, dword [esp + 0x10]
add eax, 1
cmp eax, 4
mov dword [esp + 0x78], eax
jb 0x30ab70
mov ecx, dword [esp + 0x8c]
lea eax, [ebx + 0x10]
mov dword [eax], ecx
mov edx, dword [esp + 0x90]
mov dword [eax + 4], edx
mov ecx, dword [esp + 0x94]
mov dword [eax + 8], ecx
mov edx, dword [esp + 0x98]
mov dword [eax + 0xc], edx
jmp case.0x3089a1.0
mov ecx, dword [esp + 0x8c]
lea eax, [ebx + 0x10]
mov dword [eax], ecx
mov edx, dword [esp + 0x90]
mov dword [eax + 4], edx
mov ecx, dword [esp + 0x94]
mov dword [eax + 8], ecx
mov edx, dword [esp + 0x98]
mov dword [eax + 0xc], edx
mov al, byte [ebx + 0x10]
cmp al, 2
je 0x30af81
cmp al, 3
jne 0x30afda
test byte [ebx + 0x1f], 1
je 0x30af8c
mov edx, dword [ebx + 0x18]
jmp 0x30af8e
xor edx, edx
mov ecx, dword [ebx + 0x10]
sar ecx, 8
movsx eax, al
add ecx, edx
cmp eax, 2
je 0x30afa3
cmp eax, 3
jne 0x30afda
cmp byte [ebp + eax*8 + 0x40], 0
jne 0x30afda
mov edx, dword [ebp + eax*8 + 0x3c]
call fcn.0030ccb0
test eax, eax
je 0x30afda
mov eax, dword [eax + 0xc]
movsx eax, byte [eax + 4]
test eax, eax
je 0x30afda
mov ecx, dword [esp + 0x1c4]
lea eax, [esp + 0x24]
push eax
push esi
push ebx
push ecx
mov eax, ebp
call fcn.003070c0
jmp case.0x3089a1.0
test byte [ebx + 0x1f], 1
je 0x30aff7
mov eax, dword [esp + 0x1c4]
lea edx, [esp + 0x24]
push edx
push esi
push ebx
push eax
push ebp
call fcn.00306d90
jmp case.0x3089a1.0
cmp dword [esp + 0x4c], 0x39
je case.0x3089a1.0
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x14]
push ecx
mov ecx, dword [esp + 0x80]
push edx
push eax
push ecx
mov eax, ebp
call fcn.00304d90
mov edx, dword [esp + 0x10]
mov eax, dword [edx + 0xc4]
mov ecx, 1
add dword [esp + 0xd0], ecx
add word [esp + 0x1a], cx
test eax, eax
mov dword [esp + 0x10], eax
je 0x30b04b
mov edi, dword [esp + 0xd0]
jmp 0x308910
mov edi, dword [esp + 0x1c4]
push edi
lea ebx, [esp + 0x68]
xor esi, esi
mov eax, ebp
call fcn.00308490
push edi
mov eax, ebp
call fcn.00308690
mov esi, 0x3c00
test dword [edi + 0x3c], esi
jne 0x30b07e
mov eax, ebp
call fcn.00308550
test dword [edi + 0x3c], esi
je 0x30b0b3
mov esi, dword [esp + 0x64]
test esi, esi
je 0x30b08f
mov eax, ebp
call fcn.00308150
mov esi, eax
cmp dword [edi + 0x68], 0
je 0x30b0b7
mov eax, dword [esp + 0x1c4]
push eax
mov edi, ebp
call fcn.00308360
pop edi
mov eax, esi
pop esi
pop ebp
pop ebx
add esp, 0x1ac
ret 8
mov esi, dword [esp + 0x64]
pop edi
mov eax, esi
pop esi
pop ebp
pop ebx
add esp, 0x1ac
ret 8