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

Disassembly:
sub esp, 0x3c
mov ax, word [esp + 0x40]
push ebx
xor ebx, ebx
cmp ax, bx
push esi
push edi
mov esi, ecx
mov dword [esp + 0x38], ebx
mov dword [esp + 0x24], ebx
mov dword [esp + 0x18], ebx
mov dword [esp + 0x40], ebx
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x2c], ebx
je 0x3f35d7dc
mov word [esi + 0x136], ax
movsx eax, word [esi + 0x136]
mov ecx, dword [esi + 0x242e4]
shl eax, 7
movsx eax, word [eax + ecx + 0x1c]
push eax
mov ecx, esi
call fcn.3f34d4de
mov ecx, dword [esi + 0x242e4]
mov dword [esp + 0x34], eax
movsx eax, word [esi + 0x136]
shl eax, 7
lea eax, [eax + ecx + 0x1c]
cmp word [eax], 0x1e5d
jne 0x3f35d852
movzx edi, word [esi + 0x20]
cmp edi, ebx
je 0x3f3605dc
mov ecx, dword [esi + 0x242e8]
movzx eax, di
mov eax, dword [ecx + eax*4]
mov ecx, eax
and eax, 0xffff
mov edi, eax
xor eax, eax
mov ax, word [esi + 0x136]
push ebx
push ebx
sar ecx, 0x10
push eax
push ecx
mov ecx, esi
call fcn.3f309285
jmp 0x3f35d81c
mov word [esi + 0xa6], 0x7fbc
movsx eax, word [eax]
push eax
mov ecx, esi
call fcn.3f34d73e
mov ecx, esi
push eax
mov dword [esp + 0x14], eax
call fcn.3f344837
test ax, ax
je 0x3f35d87f
mov dword [esp + 0x38], 1
movsx eax, word [esi + 0x136]
mov ecx, dword [esi + 0x242e4]
push ebp
shl eax, 7
xor ebp, ebp
mov bp, word [eax + ecx + 0x48]
cmp bp, bx
mov edi, 0xfd7
je 0x3f35d951
push ebp
push 0x27
mov ecx, esi
call fcn.3f370f8d
test ax, ax
jne 0x3f35d8e1
mov ecx, dword [esi + 0x242e4]
movsx eax, bp
shl eax, 7
lea ecx, [eax + ecx + 0x6c]
or byte [ecx], 0x20
mov ecx, dword [esi + 0x242e4]
lea ecx, [eax + ecx + 0x6d]
or byte [ecx], 0x10
mov ecx, dword [esi + 0x242e4]
lea eax, [eax + ecx + 0x6d]
or byte [eax], 0x40
push ebp
push edi
mov ecx, esi
call fcn.3f30bf29
mov ecx, dword [esi + 0x242e8]
movzx eax, ax
movsx eax, word [ecx + eax*4 + 2]
push eax
push 0x11e1
mov ecx, esi
call fcn.3f30beb2
test ax, ax
je 0x3f35d951
push ebp
push edi
mov ecx, esi
call fcn.3f30bf29
mov ecx, dword [esi + 0x242e8]
movzx eax, ax
movsx eax, word [ecx + eax*4 + 2]
mov ecx, dword [esi + 0x242e4]
shl eax, 7
movsx eax, word [eax + ecx + 0x1a]
push eax
mov ecx, esi
call fcn.3f3511be
test ax, ax
je 0x3f35d951
movsx eax, word [esi + 0x136]
mov ecx, dword [esi + 0x242e4]
shl eax, 7
mov word [eax + ecx + 0x48], bx
movsx ecx, word [esi + 0x136]
mov eax, dword [esi + 0x242e4]
shl ecx, 7
mov cx, word [ecx + eax + 0x4c]
cmp cx, bx
je 0x3f35d99b
movsx ebp, cx
shl ebp, 7
add eax, ebp
cmp word [eax + 0x1a], 0x1789
je 0x3f35d99b
test byte [eax + 0x6a], 0x60
je 0x3f35d99b
push ecx
push 0x124b
mov ecx, esi
call fcn.3f30bc16
mov eax, dword [esi + 0x242e4]
lea eax, [eax + ebp + 0x6b]
and byte [eax], 0xfd
movsx eax, word [esi + 0x136]
mov ecx, dword [esi + 0x242e4]
shl eax, 7
xor ebp, ebp
mov bp, word [eax + ecx + 0x4a]
mov ecx, esi
push ebp
push edi
call fcn.3f30bf29
test bp, bp
mov ecx, dword [esi + 0x242e8]
movzx eax, ax
mov bx, word [ecx + eax*4 + 2]
je 0x3f35dd13
push ebp
push 0x1204
mov ecx, esi
call fcn.3f30beb2
test ax, ax
jne 0x3f35d9fa
push ebx
push 0x1204
mov ecx, esi
call fcn.3f30beb2
test ax, ax
je 0x3f35dac1
mov eax, dword [esi + 0x242e4]
movsx ebx, bp
shl ebx, 7
movsx eax, word [ebx + eax + 0x1a]
push 0x1bfc
push eax
mov ecx, esi
mov dword [esp + 0x3c], ebx
call fcn.3f34edb0
test ax, ax
je 0x3f35dac1
movsx eax, word [esi + 0x136]
mov ecx, dword [esi + 0x242e4]
shl eax, 7
cmp word [eax + ecx + 0x4c], 0
jne 0x3f35dab4
push 0
mov ecx, esi
call fcn.3f309285
mov ecx, dword [esi + 0x242e4]
movsx ebx, ax
shl ebx, 7
mov word [ebx + ecx], 0x13ab
mov ecx, dword [esi + 0x242e4]
lea ecx, [ebx + ecx + 0x6a]
or byte [ecx], 0x10
push eax
push 0x11c5
mov ecx, esi
mov dword [esp + 0x58], eax
call fcn.3f309285
movsx ecx, word [esi + 0x136]
mov eax, dword [esi + 0x242e4]
shl ecx, 7
mov cx, word [ecx + eax + 0x1c]
mov word [ebx + eax + 0x1a], cx
movsx ecx, word [esi + 0x136]
mov eax, dword [esp + 0x50]
mov edx, dword [esi + 0x242e4]
mov ebx, dword [esp + 0x34]
shl ecx, 7
mov word [esi + 0x2a8f8], ax
mov word [ecx + edx + 0x4c], ax
mov eax, dword [esi + 0x242e4]
lea eax, [ebx + eax + 0x6d]
or byte [eax], 8
mov eax, dword [esi + 0x242e4]
movsx ebx, bp
shl ebx, 7
add eax, ebx
xor ecx, ecx
mov cx, word [eax + 0x1a]
cmp cx, 0x17a3
jne 0x3f35dae2
test byte [eax + 0x6a], 0x60
jne 0x3f35dafc
push 0x1f72
push ecx
mov ecx, esi
call fcn.3f34d73e
mov ecx, esi
push eax
call fcn.3f36d68e
test ax, ax
je 0x3f35db16
mov eax, dword [esi + 0x242e4]
lea eax, [ebx + eax + 0x77]
and byte [eax], 0xbf
mov eax, dword [esi + 0x242e4]
lea eax, [ebx + eax + 0x77]
and byte [eax], 0x7f
mov eax, dword [esi + 0x242e4]
test byte [ebx + eax + 0x6a], 0x80
je 0x3f35dce3
push ebp
push edi
mov ecx, esi
call fcn.3f30bf29
mov ecx, dword [esi + 0x242e8]
movzx eax, ax
movsx eax, word [ecx + eax*4 + 2]
mov ecx, dword [esi + 0x242e4]
shl eax, 7
movsx eax, word [eax + ecx + 0x1a]
push 0x1f76
push eax
mov ecx, esi
call fcn.3f36d68e
test ax, ax
jne 0x3f35db95
push ebp
push edi
mov ecx, esi
call fcn.3f30bf29
mov ecx, dword [esi + 0x242e8]
movzx eax, ax
movsx eax, word [ecx + eax*4 + 2]
mov ecx, dword [esi + 0x242e4]
shl eax, 7
movsx eax, word [eax + ecx + 0x1a]
push 1
push 1
push eax
mov ecx, esi
call fcn.3f309285
cmp ax, 0x1e5e
jne 0x3f35dba2
mov eax, dword [esi + 0x242e4]
lea eax, [ebx + eax + 0x77]
or byte [eax], 2
movsx eax, word [esi + 0x136]
mov ecx, dword [esi + 0x242e4]
shl eax, 7
cmp word [eax + ecx + 0x46], 0
jne 0x3f35dce3
push 0
mov ecx, esi
call fcn.3f309285
mov edx, dword [esi + 0x242e4]
movsx ecx, ax
shl ecx, 7
mov word [ecx + edx], 0x13af
mov edx, dword [esi + 0x242e4]
lea edx, [ecx + edx + 0x6a]
or byte [edx], 0x80
mov edx, dword [esi + 0x242e4]
lea edx, [ecx + edx + 0x6d]
or byte [edx], 4
mov edx, dword [esi + 0x242e4]
lea ecx, [ecx + edx + 0x6d]
or byte [ecx], 8
movsx ecx, word [esi + 0x136]
mov edx, dword [esi + 0x242e4]
shl ecx, 7
mov word [esi + 0x2a8f8], ax
mov word [ecx + edx + 0x46], ax
movsx ecx, word [esi + 0x136]
mov eax, dword [esi + 0x242e4]
mov dx, word [ebx + eax + 0x1a]
shl ecx, 7
movsx ecx, word [ecx + eax + 0x46]
shl ecx, 7
mov word [ecx + eax + 0x1a], dx
movsx ecx, word [esi + 0x136]
mov eax, dword [esi + 0x242e4]
mov dx, word [ebx + eax + 0x44]
shl ecx, 7
movsx ecx, word [ecx + eax + 0x46]
shl ecx, 7
push ebp
mov word [ecx + eax + 0x44], dx
push 0xfc5
mov ecx, esi
call fcn.3f30bf29
mov ecx, dword [esi + 0x242e4]
push eax
movsx eax, word [esi + 0x136]
shl eax, 7
movsx eax, word [eax + ecx + 0x46]
push eax
push 0xfc5
mov ecx, esi
call fcn.3f30c1b3
push ebp
push edi
mov ecx, esi
call fcn.3f30bf29
mov ecx, dword [esi + 0x242e4]
push eax
movsx eax, word [esi + 0x136]
shl eax, 7
movsx eax, word [eax + ecx + 0x46]
push eax
push edi
mov ecx, esi
call fcn.3f30c1b3
movsx ecx, word [esi + 0x136]
mov eax, dword [esi + 0x242e4]
shl ecx, 7
movsx ecx, word [ecx + eax + 0x46]
shl ecx, 7
test byte [ebx + eax + 0x77], 2
lea eax, [ecx + eax + 0x77]
je 0x3f35dce0
or byte [eax], 2
jmp 0x3f35dce3
and byte [eax], 0xfd
push ebp
push 0x1027
mov ecx, esi
call fcn.3f30bf29
test ax, ax
je 0x3f35dd13
mov eax, dword [esi + 0x242e4]
add ebx, eax
test byte [ebx + 0x6a], 0x91
jne 0x3f35dd13
test byte [ebx + 0x6c], 8
jne 0x3f35dd13
test byte [ebx + 0x7e], 0x10
jne 0x3f35dd13
or byte [ebx + 0x7b], 0x80
movsx ecx, word [esi + 0x136]
mov eax, dword [esi + 0x242e4]
shl ecx, 7
mov bp, word [ecx + eax + 0x46]
test bp, bp
je 0x3f35dede
movsx ebx, bp
shl ebx, 7
add eax, ebx
test byte [eax + 0x7c], 8
je 0x3f35dd55
cmp word [eax + 0x1a], 0x178e
jne 0x3f35dd55
mov cl, byte [eax + 0x6a]
test cl, 0x10
je 0x3f35dd55
and cl, 0xef
mov byte [eax + 0x6a], cl
mov eax, dword [esi + 0x242e4]
movsx eax, word [ebx + eax + 0x5c]
push 0x1f79
push eax
mov ecx, esi
call fcn.3f36d68e
test ax, ax
je 0x3f35dd95
mov eax, dword [esi + 0x242e4]
add eax, ebx
mov cl, byte [eax + 0x6d]
test cl, 8
jne 0x3f35dd95
test cl, 0x10
je 0x3f35dd95
mov cl, byte [eax + 0x7c]
test cl, 8
jne 0x3f35dd95
or cl, 8
mov byte [eax + 0x7c], cl
cmp word [esp + 0x14], 0x1764
jne 0x3f35ddd2
movsx eax, word [esi + 0x136]
mov ecx, dword [esi + 0x242e4]
shl eax, 7
add eax, ecx
cmp word [eax + 0x4a], 0
je 0x3f35ddd2
cmp word [eax + 0x50], 0
je 0x3f35ddd2
xor eax, eax
mov ax, word [esi + 0x76]
mov ecx, esi
push eax
push ebp
push 0x101d
call fcn.3f30c1b3
push ebp
push edi
mov ecx, esi
call fcn.3f30bf29
mov ecx, dword [esi + 0x242e8]
movzx eax, ax
movsx eax, word [ecx + eax*4 + 2]
push eax
push 0x11e0
mov ecx, esi
call fcn.3f30beb2
test ax, ax
je 0x3f35de0c
mov eax, dword [esi + 0x242e4]
test byte [ebx + eax + 0x7c], 0x40
jne 0x3f35dea3
push ebp
push edi
mov ecx, esi
call fcn.3f30bf29
test ax, ax
jne 0x3f35de2c
push ebp
push 0x11e0
mov ecx, esi
call fcn.3f30beb2
test ax, ax
jne 0x3f35dea3
push ebp
push edi
mov ecx, esi
call fcn.3f30bf29
mov ecx, dword [esi + 0x242e8]
movzx eax, ax
movsx eax, word [ecx + eax*4 + 2]
push eax
push 0x124f
mov ecx, esi
call fcn.3f30beb2
test ax, ax
je 0x3f35de7a
mov eax, dword [esi + 0x242e4]
movsx eax, word [ebx + eax + 0x1a]
push 0x1e5f
push eax
mov ecx, esi
call fcn.3f34d73e
mov ecx, esi
push eax
call fcn.3f34edb0
test ax, ax
jne 0x3f35dea3
push ebp
push edi
mov ecx, esi
call fcn.3f30bf29
mov ecx, dword [esi + 0x242e8]
movzx eax, ax
movsx eax, word [ecx + eax*4 + 2]
push eax
push 0x1259
mov ecx, esi
call fcn.3f30beb2
test ax, ax
je 0x3f35debd
mov eax, dword [esi + 0x242e4]
push ebp
lea eax, [ebx + eax + 0x7e]
or byte [eax], 2
push 0x11a4
mov ecx, esi
call fcn.3f309285
mov eax, dword [esi + 0x242e4]
add ebx, eax
mov al, byte [ebx + 0x7d]
test al, 0x40
je 0x3f35dede
mov cl, byte [ebx + 0x6d]
test cl, 0x10
je 0x3f35dede
test cl, 8
jne 0x3f35dede
and al, 0xbf
mov byte [ebx + 0x7d], al
movsx eax, word [esi + 0x136]
mov ecx, dword [esi + 0x242e4]
shl eax, 7
movsx eax, word [eax + ecx + 0x4c]
push eax
push edi
mov ecx, esi
call fcn.3f30bf29
mov edx, dword [esi + 0x242e8]
mov ecx, dword [esi + 0x242e4]
movzx eax, ax
movsx eax, word [edx + eax*4 + 2]
shl eax, 7
test byte [eax + ecx + 0x7d], 4
je 0x3f35df86
movsx eax, word [esi + 0x136]
shl eax, 7
add eax, ecx
movsx edx, word [eax + 0x4c]
shl edx, 7
test byte [edx + ecx + 0x7c], 0x10
je 0x3f35df86
movsx eax, word [eax + 0x4a]
push eax
push edi
mov ecx, esi
call fcn.3f30bf29
mov ecx, dword [esi + 0x242e8]
movzx eax, ax
movsx eax, word [ecx + eax*4 + 2]
push eax
push 0x1251
mov ecx, esi
call fcn.3f30beb2
test ax, ax
je 0x3f35df86
movsx ecx, word [esi + 0x136]
mov eax, dword [esi + 0x242e4]
shl ecx, 7
lea ecx, [ecx + eax + 0x4a]
movsx edx, word [ecx]
shl edx, 7
test byte [edx + eax + 0x7c], 0x10
je 0x3f35df86
and word [ecx], 0
xor eax, eax
mov ax, word [esi + 0x136]
mov ecx, esi
push eax
call fcn.3f309285
xor eax, eax
mov ax, word [esi + 0x136]
mov ecx, esi
push eax
call fcn.3f309285
movsx eax, word [esi + 0x136]
mov ecx, dword [esi + 0x242e4]
shl eax, 7
movsx eax, word [eax + ecx + 0x1c]
push eax
mov ecx, esi
call fcn.3f3511e0
test ax, ax
je 0x3f35dfd2
mov dword [esp + 0x28], 1
movsx eax, word [esi + 0x136]
mov ecx, dword [esi + 0x242e4]
shl eax, 7
movsx eax, word [eax + ecx + 0x1c]
push eax
mov ecx, esi
call fcn.3f3511be
test ax, ax
je 0x3f35dffc
mov dword [esp + 0x1c], 1
movsx ecx, word [esi + 0x136]
mov eax, dword [esi + 0x242e4]
shl ecx, 7
add ecx, eax
movsx edx, word [ecx + 0x4a]
shl edx, 7
add eax, edx
test byte [eax + 0x7e], 0x10
je 0x3f35e114
test byte [eax + 0x6a], 0x10
je 0x3f35e114
xor eax, eax
mov ax, word [ecx + 0x46]
test ax, ax
je 0x3f35e114
cmp word [ecx + 0x4e], 0
je 0x3f35e114
push eax
mov ebp, 0x101d
push ebp
mov ecx, esi
call fcn.3f30bf29
test ax, ax
jne 0x3f35e07d
mov ecx, dword [esi + 0x242e4]
xor eax, eax
mov ax, word [esi + 0x76]
push eax
movsx eax, word [esi + 0x136]
shl eax, 7
movsx eax, word [eax + ecx + 0x46]
push eax
push ebp
mov ecx, esi
call fcn.3f30c1b3
movsx eax, word [esi + 0x136]
mov ecx, dword [esi + 0x242e4]
shl eax, 7
movsx eax, word [eax + ecx + 0x4a]
push eax
push ebp
mov ecx, esi
call fcn.3f30bf29
test ax, ax
jne 0x3f35e0ca
mov ecx, dword [esi + 0x242e4]
xor eax, eax
mov ax, word [esi + 0xa6]
dec ax
push eax
movsx eax, word [esi + 0x136]
shl eax, 7
movsx eax, word [eax + ecx + 0x4a]
push eax
push ebp
mov ecx, esi
call fcn.3f30c1b3
movsx eax, word [esi + 0x136]
mov ecx, dword [esi + 0x242e4]
shl eax, 7
movsx eax, word [eax + ecx + 0x4e]
push eax
push ebp
mov ecx, esi
call fcn.3f30bf29
test ax, ax
jne 0x3f35e119
mov ecx, dword [esi + 0x242e4]
xor eax, eax
mov ax, word [esi + 0x76]
push eax
movsx eax, word [esi + 0x136]
shl eax, 7
movsx eax, word [eax + ecx + 0x4e]
push eax
push ebp
mov ecx, esi
call fcn.3f30c1b3
jmp 0x3f35e119
mov ebp, 0x101d
movsx eax, word [esi + 0x136]
mov ecx, dword [esi + 0x242e4]
shl eax, 7
add eax, ecx
xor ecx, ecx
cmp word [eax + 0x4a], 0
mov cx, word [eax + 0x46]
mov dword [esp + 0x50], ecx
jne 0x3f35e211
test cx, cx
je 0x3f35e211
push ecx
push edi
mov ecx, esi
call fcn.3f30bf29
mov ecx, dword [esi + 0x242e8]
movzx eax, ax
movsx eax, word [ecx + eax*4 + 2]
push eax
push 0x11e5
mov ecx, esi
call fcn.3f30beb2
test ax, ax
je 0x3f35e211
push 0
mov ecx, esi
call fcn.3f309285
mov ecx, esi
mov ebp, eax
mov eax, dword [esi + 0x242e4]
movsx ebx, bp
shl ebx, 7
mov word [ebx + eax], 0x13a8
mov eax, dword [esi + 0x242e4]
lea eax, [ebx + eax + 0x77]
or byte [eax], 0x80
mov eax, dword [esi + 0x242e4]
push ebp
lea eax, [ebx + eax + 0x7c]
or byte [eax], 4
push 0x11e5
call fcn.3f309285
movsx ecx, word [esp + 0x50]
mov eax, dword [esi + 0x242e4]
push dword [esp + 0x50]
shl ecx, 7
mov cx, word [ecx + eax + 0x1a]
mov word [ebx + eax + 0x1a], cx
push edi
mov ecx, esi
call fcn.3f30bf29
mov ecx, esi
push eax
call fcn.3f335f9c
mov ecx, esi
push eax
push ebp
push edi
call fcn.3f30c1b3
movsx eax, word [esi + 0x136]
mov ecx, dword [esi + 0x242e4]
mov word [esi + 0x2a8f8], bp
shl eax, 7
mov word [eax + ecx + 0x4a], bp
mov ebp, 0x101d
movsx eax, word [esi + 0x136]
mov ecx, dword [esi + 0x242e4]
shl eax, 7
add eax, ecx
xor ebx, ebx
mov bx, word [eax + 0x4a]
test bx, bx
movsx eax, word [eax + 0x4c]
mov dword [esp + 0x50], eax
je 0x3f35e33a
test ax, ax
je 0x3f35e33a
push ebx
push ebp
mov ecx, esi
call fcn.3f30bf29
test ax, ax
jne 0x3f35e33a
push dword [esp + 0x50]
mov ecx, esi
push ebp
call fcn.3f30bf29
test ax, ax
jne 0x3f35e33a
push ebx
push edi
mov ecx, esi
call fcn.3f30bf29
mov ecx, dword [esi + 0x242e8]
movzx eax, ax
movsx eax, word [ecx + eax*4 + 2]
push eax
push 0x1253
mov ecx, esi
call fcn.3f30beb2
test ax, ax
je 0x3f35e2bf
push dword [esp + 0x50]
mov ecx, esi
push edi
call fcn.3f30bf29
mov ecx, dword [esi + 0x242e8]
movzx eax, ax
movsx eax, word [ecx + eax*4 + 2]
push eax
push 0x1294
mov ecx, esi
call fcn.3f30beb2
test ax, ax
jne 0x3f35e312
push ebx
push edi
mov ecx, esi
call fcn.3f30bf29
mov ecx, dword [esi + 0x242e8]
movzx eax, ax
movsx eax, word [ecx + eax*4 + 2]
push eax
push 0x1251
mov ecx, esi
call fcn.3f30beb2
test ax, ax
je 0x3f35e33a
push dword [esp + 0x50]
mov ecx, esi
push edi
call fcn.3f30bf29
mov ecx, dword [esi + 0x242e8]
movzx eax, ax
movsx eax, word [ecx + eax*4 + 2]
mov ecx, dword [esi + 0x242e4]
shl eax, 7
test byte [eax + ecx + 0x7d], 4
je 0x3f35e33a
xor eax, eax
mov ax, word [esi + 0x76]
mov ecx, esi
push eax
push ebx
push ebp
call fcn.3f30c1b3
xor eax, eax
mov ax, word [esi + 0xa6]
dec ax
mov ecx, esi
push eax
push dword [esp + 0x54]
push ebp
call fcn.3f30c1b3
movsx eax, word [esi + 0x136]
mov ecx, dword [esi + 0x242e4]
shl eax, 7
add eax, ecx
xor ecx, ecx
mov cx, word [eax + 0x4a]
xor ebx, ebx
test cx, cx
mov bx, word [eax + 0x48]
mov dword [esp + 0x50], ecx
je 0x3f35e3fa
test bx, bx
je 0x3f35e3fa
push ebx
push 3
mov ecx, esi
call fcn.3f370f8d
test ax, ax
je 0x3f35e3fa
push dword [esp + 0x50]
mov ecx, esi
push edi
call fcn.3f30bf29
mov ecx, dword [esi + 0x242e8]
movzx eax, ax
movsx eax, word [ecx + eax*4 + 2]
push eax
push 0x11a9
mov ecx, esi
call fcn.3f30beb2
test ax, ax
jne 0x3f35e3d2
push ebx
push edi
mov ecx, esi
call fcn.3f30bf29
mov ecx, dword [esi + 0x242e8]
movzx eax, ax
movsx eax, word [ecx + eax*4 + 2]
push eax
push 0x11a9
mov ecx, esi
call fcn.3f30beb2
test ax, ax
je 0x3f35e3fa
xor eax, eax
mov ax, word [esi + 0xa6]
dec ax
mov ecx, esi
push eax
push dword [esp + 0x54]
push ebp
call fcn.3f30c1b3
xor eax, eax
mov ax, word [esi + 0x76]
mov ecx, esi
push eax
push ebx
push ebp
call fcn.3f30c1b3
movsx eax, word [esi + 0x136]
mov ecx, dword [esi + 0x242e4]
shl eax, 7
add eax, ecx
mov bx, word [eax + 0x4a]
mov ax, word [eax + 0x48]
test ax, ax
je 0x3f35e426
movsx eax, ax
shl eax, 7
test byte [eax + ecx + 0x6c], 0x20
je 0x3f35e4a0
test bx, bx
je 0x3f35e4a0
push ebx
push edi
mov ecx, esi
call fcn.3f30bf29
mov ecx, dword [esi + 0x242e8]
movzx eax, ax
movsx eax, word [ecx + eax*4 + 2]
push eax
push 0x11d6
mov ecx, esi
call fcn.3f30beb2
test ax, ax
jne 0x3f35e47d
push ebx
push edi
mov ecx, esi
call fcn.3f30bf29
mov ecx, dword [esi + 0x242e8]
movzx eax, ax
movsx eax, word [ecx + eax*4 + 2]
push eax
push 0x11d7
mov ecx, esi
call fcn.3f30beb2
test ax, ax
je 0x3f35e4a0
push ebx
push ebp
mov ecx, esi
call fcn.3f30bf29
test ax, ax
jne 0x3f35e4a0
xor eax, eax
mov ax, word [esi + 0xa6]
dec ax
mov ecx, esi
push eax
push ebx
push ebp
call fcn.3f30c1b3
movsx eax, word [esi + 0x136]
mov ecx, dword [esi + 0x242e4]
shl eax, 7
add eax, ecx
xor ecx, ecx
mov cx, word [eax + 0x4a]
xor ebx, ebx
test cx, cx
mov bx, word [eax + 0x46]
mov dword [esp + 0x50], ecx
je 0x3f35e559
test bx, bx
je 0x3f35e559
push ebx
push 0x11e0
mov ecx, esi
call fcn.3f30beb2
test ax, ax
jne 0x3f35e50f
push ebx
push edi
mov ecx, esi
call fcn.3f30bf29
mov ecx, dword [esi + 0x242e8]
movzx eax, ax
movsx eax, word [ecx + eax*4 + 2]
push eax
push 0x11e0
mov ecx, esi
call fcn.3f30beb2
test ax, ax
je 0x3f35e559
movsx eax, word [esi + 0x136]
mov ecx, dword [esi + 0x242e4]
shl eax, 7
movsx eax, word [eax + ecx + 0x1c]
push eax
mov ecx, esi
call fcn.3f3511be
test ax, ax
jne 0x3f35e559
xor eax, eax
mov ax, word [esi + 0xa6]
dec ax
mov ecx, esi
push eax
push dword [esp + 0x54]
push ebp
call fcn.3f30c1b3
xor eax, eax
mov ax, word [esi + 0x76]
mov ecx, esi
push eax
push ebx
push ebp
call fcn.3f30c1b3
movsx eax, word [esi + 0x136]
mov ecx, dword [esi + 0x242e4]
shl eax, 7
xor ebx, ebx
mov bx, word [eax + ecx + 0x46]
mov ecx, esi
push ebx
push edi
call fcn.3f30bf29
test ax, ax
je 0x3f35e621
push 0x3f35be4f
push ebx
push edi
mov ecx, esi
call fcn.3f30bf29
mov ecx, esi
push eax
call fcn.3f36d6bc
test ax, ax
je 0x3f35e621
push ebx
push edi
mov ecx, esi
call fcn.3f30bf29
movzx eax, ax
mov dword [esp + 0x50], eax
cmp dword [esp + 0x50], 0
je 0x3f35e621
movzx eax, word [esp + 0x50]
mov ecx, dword [esi + 0x242e8]
mov eax, dword [ecx + eax*4]
mov ebp, eax
sar ebp, 0x10
and eax, 0xffff
movsx ebx, bp
mov dword [esp + 0x50], eax
mov eax, dword [esi + 0x242e4]
shl ebx, 7
movsx eax, word [ebx + eax + 0x1a]
push 0
push 0
push eax
mov ecx, esi
call fcn.3f34e92d
mov ecx, esi
push eax
mov eax, dword [esi + 0x242e4]
movsx eax, word [ebx + eax + 0x5a]
push eax
call fcn.3f309285
mov ebx, 0x101d
mov ecx, esi
push eax
push ebx
call fcn.3f30bf29
mov ecx, esi
push eax
push ebp
push ebx
call fcn.3f30c1b3
mov ebp, ebx
jmp 0x3f35e5b1
movsx eax, word [esi + 0x136]
mov ecx, dword [esi + 0x242e4]
shl eax, 7
cmp word [eax + ecx + 0x46], 0
jne 0x3f35e6e9
push 0x1f7e
push dword [esp + 0x18]
mov ecx, esi
call fcn.3f36d68e
test ax, ax
je 0x3f35e6e9
push 0
mov ecx, esi
call fcn.3f309285
mov ecx, eax
mov eax, dword [esi + 0x242e4]
movsx ebx, cx
shl ebx, 7
mov word [ebx + eax], 0x13af
mov eax, dword [esi + 0x242e4]
push ecx
mov dword [esp + 0x54], ecx
lea eax, [ebx + eax + 0x6d]
or byte [eax], 0x10
push 0x11b0
mov ecx, esi
call fcn.3f309285
mov eax, dword [esi + 0x242e4]
push 0x1f83
push dword [esp + 0x18]
lea eax, [ebx + eax + 0x7e]
or byte [eax], 0x40
mov ecx, esi
call fcn.3f36d68e
test ax, ax
mov eax, dword [esi + 0x242e4]
je 0x3f35e6c2
mov word [ebx + eax + 0x1a], 0x1e60
jmp 0x3f35e6c9
mov word [ebx + eax + 0x1a], 0x1e61
movsx ecx, word [esi + 0x136]
mov eax, dword [esp + 0x50]
mov edx, dword [esi + 0x242e4]
shl ecx, 7
mov word [esi + 0x2a8f8], ax
mov word [ecx + edx + 0x46], ax
movsx ecx, word [esi + 0x136]
mov eax, dword [esi + 0x242e4]
shl ecx, 7
add ecx, eax
movsx edx, word [ecx + 0x46]
shl edx, 7
add eax, edx
test byte [eax + 0x6d], 8
je 0x3f35e7e5
cmp word [ecx + 0x48], 0
jne 0x3f35e7e5
movsx eax, word [eax + 0x1a]
push 0x1f86
push eax
mov ecx, esi
call fcn.3f36d68e
test ax, ax
je 0x3f35e7e5
push 0
mov ecx, esi
call fcn.3f309285
mov edx, dword [esi + 0x242e4]
movsx ecx, ax
shl ecx, 7
mov word [ecx + edx], 0x13b3
mov edx, dword [esi + 0x242e4]
lea edx, [ecx + edx + 0x6c]
or byte [edx], 0x20
mov edx, dword [esi + 0x242e4]
lea edx, [ecx + edx + 0x6d]
or byte [edx], 0x40
mov edx, dword [esi + 0x242e4]
lea edx, [ecx + edx + 0x6d]
or byte [edx], 0x10
mov edx, dword [esi + 0x242e4]
lea edx, [ecx + edx + 0x78]
or byte [edx], 0x80
movsx ebx, word [esi + 0x136]
mov edx, dword [esi + 0x242e4]
shl ebx, 7
movsx ebx, word [ebx + edx + 0x46]
shl ebx, 7
mov bx, word [ebx + edx + 0x1a]
mov word [ecx + edx + 0x1a], bx
movsx ecx, word [esi + 0x136]
mov edx, dword [esi + 0x242e4]
mov word [esi + 0x2a8f8], ax
shl ecx, 7
mov word [ecx + edx + 0x48], ax
mov ecx, dword [esi + 0x242e4]
xor eax, eax
mov ax, word [esi + 0x76]
push eax
movsx eax, word [esi + 0x136]
shl eax, 7
movsx eax, word [eax + ecx + 0x48]
push eax
push ebp
mov ecx, esi
call fcn.3f30c1b3
cmp word [esi + 0x72a], 0
je 0x3f35e825
movsx ecx, word [esi + 0x136]
mov eax, dword [esi + 0x242e4]
shl ecx, 7
movsx ecx, word [ecx + eax + 0x4a]
test cx, cx
je 0x3f35e825
movsx edx, cx
shl edx, 7
cmp word [edx + eax + 0x1a], 0x1e62
jne 0x3f35e825
push ecx
push 0x1281
mov ecx, esi
call fcn.3f30bc16
movsx ecx, word [esi + 0x136]
mov eax, dword [esi + 0x242e4]
shl ecx, 7
movsx ecx, word [ecx + eax + 0x46]
movsx edx, cx
shl edx, 7
cmp word [edx + eax + 0x1a], 0x1a32
jne 0x3f35e8ad
push ecx
mov ebx, 0x1043
push ebx
mov ecx, esi
call fcn.3f30bf29
test ax, ax
jne 0x3f35e8ad
push 0
push 2
mov ecx, esi
call fcn.3f36f7d1
mov ecx, dword [esi + 0x242e4]
push eax
movsx eax, word [esi + 0x136]
shl eax, 7
movsx eax, word [eax + ecx + 0x46]
push eax
push ebx
mov ecx, esi
call fcn.3f30bf29
mov ecx, esi
push eax
call fcn.3f36f82f
mov ecx, dword [esi + 0x242e4]
push eax
movsx eax, word [esi + 0x136]
shl eax, 7
movsx eax, word [eax + ecx + 0x46]
push eax
push ebx
mov ecx, esi
call fcn.3f30c1b3
movsx eax, word [esi + 0x136]
mov ecx, dword [esi + 0x242e4]
shl eax, 7
xor ebx, ebx
mov bx, word [eax + ecx + 0x48]
test bx, bx
je 0x3f35eb4b
push ebx
push edi
mov ecx, esi
call fcn.3f30bf29
mov ecx, dword [esi + 0x242e8]
movzx eax, ax
movsx eax, word [ecx + eax*4 + 2]
push eax
push 0x11cc
mov ecx, esi
call fcn.3f30beb2
test ax, ax
je 0x3f35eb4b
push ebx
push edi
mov ecx, esi
call fcn.3f30bf29
mov ecx, dword [esi + 0x242e8]
movzx eax, ax
movsx eax, word [ecx + eax*4 + 2]
push eax
push 0x43
mov ecx, esi
call fcn.3f370f8d
test ax, ax
jne 0x3f35eb4b
mov eax, dword [esi + 0x242e4]
movsx ebp, bx
shl ebp, 7
test byte [eax + ebp + 0x6c], 0x20
jne 0x3f35e942
test byte [eax + ebp + 0x6d], 4
je 0x3f35eb4b
movsx ecx, word [esi + 0x136]
shl ecx, 7
cmp word [ecx + eax + 0x46], 0
jne 0x3f35eb4b
push 0
mov ecx, esi
call fcn.3f309285
mov ecx, eax
mov eax, dword [esi + 0x242e4]
movsx ebx, cx
shl ebx, 7
mov word [ebx + eax], 0x13af
movsx edx, word [esi + 0x136]
mov eax, dword [esi + 0x242e4]
shl edx, 7
movsx edx, word [edx + eax + 0x48]
shl edx, 7
mov dx, word [edx + eax + 0x1a]
push ecx
mov dword [esp + 0x54], ecx
push 0x11cc
mov ecx, esi
mov word [ebx + eax + 0x1a], dx
call fcn.3f309285
mov eax, dword [esi + 0x242e4]
lea eax, [ebx + eax + 0x7d]
or byte [eax], 8
movsx eax, word [esi + 0x136]
mov ecx, dword [esi + 0x242e4]
shl eax, 7
movsx eax, word [eax + ecx + 0x1c]
push 0x1704
push eax
mov ecx, esi
call fcn.3f34d479
test ax, ax
je 0x3f35e9e9
mov eax, dword [esi + 0x242e4]
lea ebx, [ebx + eax + 0x70]
or byte [ebx], 8
movsx ecx, word [esi + 0x136]
mov eax, dword [esp + 0x50]
mov edx, dword [esi + 0x242e4]
shl ecx, 7
mov word [esi + 0x2a8f8], ax
mov word [ecx + edx + 0x46], ax
movsx ecx, word [esi + 0x136]
mov eax, dword [esi + 0x242e4]
shl ecx, 7
movsx ecx, word [ecx + eax + 0x46]
shl ecx, 7
test byte [eax + ebp + 0x6d], 4
lea eax, [ecx + eax + 0x6d]
je 0x3f35ea31
or byte [eax], 0x10
jmp 0x3f35ea53
or byte [eax], 8
movsx ecx, word [esi + 0x136]
mov eax, dword [esi + 0x242e4]
shl ecx, 7
movsx ecx, word [ecx + eax + 0x46]
shl ecx, 7
lea eax, [ecx + eax + 0x6d]
or byte [eax], 4
push 0
mov ecx, esi
call fcn.3f309285
mov ecx, dword [esi + 0x242e4]
mov ebx, eax
movsx eax, bx
shl eax, 7
mov word [eax + ecx + 0x5a], 0xfc1
movsx edx, word [esi + 0x136]
mov ecx, dword [esi + 0x242e4]
shl edx, 7
movsx edx, word [edx + ecx + 0x48]
shl edx, 7
mov dx, word [edx + ecx + 0x1a]
push ebx
mov word [eax + ecx + 0x1a], dx
push 0x11cc
mov ecx, esi
call fcn.3f309285
push 0
push ebx
mov ecx, esi
mov word [esi + 0x2a8f8], bx
call fcn.3f36f7d1
mov ecx, dword [esi + 0x242e4]
push eax
movsx eax, word [esi + 0x136]
shl eax, 7
movsx eax, word [eax + ecx + 0x46]
push eax
push edi
mov ecx, esi
call fcn.3f30bf29
mov ecx, esi
push eax
call fcn.3f36f82f
mov ecx, dword [esi + 0x242e4]
push eax
movsx eax, word [esi + 0x136]
shl eax, 7
movsx eax, word [eax + ecx + 0x46]
push eax
push edi
mov ecx, esi
call fcn.3f30c1b3
mov ecx, dword [esi + 0x242e4]
xor eax, eax
mov ax, word [esi + 0xa6]
dec ax
mov ebx, 0x101d
push eax
movsx eax, word [esi + 0x136]
shl eax, 7
movsx eax, word [eax + ecx + 0x48]
push eax
push ebx
mov ecx, esi
call fcn.3f30c1b3
mov ecx, dword [esi + 0x242e4]
xor eax, eax
mov ax, word [esi + 0x76]
push eax
movsx eax, word [esi + 0x136]
shl eax, 7
movsx eax, word [eax + ecx + 0x46]
push eax
push ebx
mov ecx, esi
call fcn.3f30c1b3
movsx eax, word [esi + 0x136]
mov ecx, dword [esi + 0x242e4]
and dword [esp + 0x20], 0
and dword [esp + 0x10], 0
shl eax, 7
movsx eax, word [eax + ecx + 0x1c]
push 0x1723
push eax
mov ecx, esi
call fcn.3f34edb0
test ax, ax
je 0x3f35eb84
mov dword [esp + 0x40], 1
movzx eax, word [esi + 0x20]
mov dword [esp + 0x2c], eax
cmp dword [esp + 0x2c], 0
je 0x3f35fe75
movzx eax, word [esp + 0x2c]
mov ecx, dword [esi + 0x242e8]
mov eax, dword [ecx + eax*4]
mov ebp, eax
and eax, 0xffff
mov dword [esp + 0x2c], eax
xor eax, eax
mov ax, word [esi + 0x136]
push 0
sar ebp, 0x10
mov ecx, esi
mov dword [esp + 0x1c], ebp
push eax
push ebp
call fcn.3f309285
mov ebx, eax
test bx, bx
je 0x3f35f8c8
mov eax, dword [esi + 0x242e4]
movsx ebp, bx
shl ebp, 7
cmp word [eax + ebp + 0x44], 0x56
jne 0x3f35ebf9
push 2
push ebx
push 0xfc5
mov ecx, esi
call fcn.3f30c1b3
push ebx
push edi
mov ecx, esi
call fcn.3f30bf29
test ax, ax
mov ecx, esi
push ebx
je 0x3f35f10c
push edi
call fcn.3f30bf29
mov ecx, dword [esi + 0x242e8]
movzx eax, ax
movsx eax, word [ecx + eax*4 + 2]
push eax
push 0x2d
mov ecx, esi
call fcn.3f370f8d
test ax, ax
jne 0x3f35ec57
push ebx
push edi
mov ecx, esi
call fcn.3f30bf29
mov ecx, dword [esi + 0x242e8]
movzx eax, ax
movsx eax, word [ecx + eax*4 + 2]
push eax
push 0x42
mov ecx, esi
call fcn.3f370f8d
test ax, ax
je 0x3f35ecd1
push ebx
push edi
mov ecx, esi
call fcn.3f30bf29
mov ecx, dword [esi + 0x242e8]
movzx eax, ax
movsx eax, word [ecx + eax*4 + 2]
mov ecx, dword [esi + 0x242e4]
shl eax, 7
cmp word [eax + ecx + 0x5a], 0xfbf
jne 0x3f35ecd1
push ebx
push edi
mov ecx, esi
call fcn.3f30bf29
mov ecx, dword [esi + 0x242e8]
movzx eax, ax
movsx eax, word [ecx + eax*4 + 2]
mov ecx, dword [esi + 0x242e4]
shl eax, 7
movsx eax, word [eax + ecx + 0x1a]
push eax
mov ecx, esi
call fcn.3f34d4de
cmp ax, 1
jne 0x3f35ecd1
xor eax, eax
mov ax, word [esi + 0x136]
push 0
push 0
mov ecx, esi
push eax
push dword [esp + 0x24]
call fcn.3f309285
jmp 0x3f35eb8c
mov eax, dword [esi + 0x242e4]
add eax, ebp
cmp word [eax], 0x13a8
jne 0x3f35edae
test byte [eax + 0x6e], 1
jne 0x3f35ecf4
test byte [eax + 0x6d], 0x80
je 0x3f35edae
push ebx
push edi
mov ecx, esi
call fcn.3f30bf29
mov ecx, dword [esi + 0x242e8]
movzx eax, ax
movsx eax, word [ecx + eax*4 + 2]
push eax
push edi
mov ecx, esi
call fcn.3f30bf29
test ax, ax
jne 0x3f35ed88
push ebx
push edi
mov ecx, esi
call fcn.3f30bf29
mov ecx, dword [esi + 0x242e8]
movzx eax, ax
movsx eax, word [ecx + eax*4 + 2]
mov ecx, dword [esi + 0x242e4]
mov dword [esp + 0x50], eax
movsx eax, word [esi + 0x136]
shl eax, 7
movsx eax, word [eax + ecx + 0x48]
push eax
push edi
mov ecx, esi
call fcn.3f30bf29
mov ecx, esi
push eax
call fcn.3f335f9c
mov ecx, esi
push eax
push dword [esp + 0x54]
push edi
call fcn.3f30c1b3
movsx eax, word [esi + 0x136]
mov ecx, dword [esi + 0x242e4]
shl eax, 7
movsx eax, word [eax + ecx + 0x48]
push eax
push ebx
push ebx
push 0x34
mov ecx, esi
call fcn.3f309285
movsx eax, word [esi + 0x136]
mov ecx, dword [esi + 0x242e4]
shl eax, 7
movsx eax, word [eax + ecx + 0x48]
push eax
push ebx
push ebx
push 0x34
mov ecx, esi
call fcn.3f309285
jmp 0x3f35f125
push ebx
push edi
mov ecx, esi
call fcn.3f30bf29
mov ecx, dword [esi + 0x242e8]
movzx eax, ax
movsx eax, word [ecx + eax*4 + 2]
push eax
push 0x1240
mov ecx, esi
call fcn.3f30beb2
test ax, ax
jne 0x3f35f125
mov ax, word [esi + 0x80]
and word [esi + 0xc4], 0
push 1
mov ecx, esi
mov word [esp + 0x38], ax
call fcn.3f309285
push ebx
mov ecx, esi
call fcn.3f309285
push 0
mov ecx, esi
push eax
push edi
mov dword [esp + 0x5c], eax
call fcn.3f30c1b3
mov eax, dword [esp + 0x50]
push ebx
push eax
mov ecx, esi
mov word [esi + 0x2a8f8], ax
call fcn.3f35d693
push dword [esp + 0x50]
mov ecx, esi
push dword [esp + 0x54]
call fcn.3f309285
and word [esi + 0x80], 0
xor eax, eax
mov ax, word [esi + 0xa4]
mov ecx, esi
push eax
push dword [esp + 0x54]
call fcn.3f3447f2
push 0xffffffffffffffff
mov ecx, esi
call fcn.3f309285
push 0
mov ecx, esi
call fcn.3f309285
mov ecx, esi
push eax
mov dword [esp + 0x54], eax
call fcn.3f34481a
push dword [esp + 0x50]
mov ax, word [esp + 0x38]
push edi
mov ecx, esi
mov word [esi + 0x80], ax
call fcn.3f30bf29
mov ecx, esi
push eax
push ebx
push edi
call fcn.3f30c1b3
push ebx
push edi
mov ecx, esi
call fcn.3f30bf29
mov ecx, dword [esi + 0x242e8]
movzx eax, ax
movsx eax, word [ecx + eax*4 + 2]
push eax
push ebx
push ebx
push 0x34
mov ecx, esi
call fcn.3f309285
push ebx
push edi
mov ecx, esi
call fcn.3f30bf29
mov ecx, dword [esi + 0x242e8]
movzx eax, ax
movsx eax, word [ecx + eax*4 + 2]
push eax
push edi
mov ecx, esi
call fcn.3f30bf29
test ax, ax
je 0x3f35efdf
push ebx
push edi
mov ecx, esi
call fcn.3f30bf29
mov ecx, dword [esi + 0x242e8]
movzx eax, ax
movsx eax, word [ecx + eax*4 + 2]
push eax
push edi
mov ecx, esi
call fcn.3f30bf29
mov ecx, dword [esi + 0x242e8]
movzx eax, ax
movsx eax, word [ecx + eax*4 + 2]
push eax
push 0x2d
mov ecx, esi
call fcn.3f370f8d
test ax, ax
jne 0x3f35efa5
push ebx
push edi
mov ecx, esi
call fcn.3f30bf29
mov ecx, dword [esi + 0x242e8]
movzx eax, ax
movsx eax, word [ecx + eax*4 + 2]
push eax
push edi
mov ecx, esi
call fcn.3f30bf29
mov ecx, dword [esi + 0x242e8]
movzx eax, ax
movsx eax, word [ecx + eax*4 + 2]
push eax
push 0x42
mov ecx, esi
call fcn.3f370f8d
test ax, ax
jne 0x3f35efa5
push ebx
push edi
mov ecx, esi
call fcn.3f30bf29
mov ecx, dword [esi + 0x242e8]
movzx eax, ax
movsx eax, word [ecx + eax*4 + 2]
push eax
push 0x2d
mov ecx, esi
call fcn.3f370f8d
test ax, ax
jne 0x3f35efa5
push ebx
push edi
mov ecx, esi
call fcn.3f30bf29
mov ecx, dword [esi + 0x242e8]
movzx eax, ax
movsx eax, word [ecx + eax*4 + 2]
push eax
push 0x42
mov ecx, esi
call fcn.3f370f8d
test ax, ax
je 0x3f35efdf
push ebx
push edi
mov ecx, esi
call fcn.3f30bf29
mov ecx, dword [esi + 0x242e8]
movzx eax, ax
movsx eax, word [ecx + eax*4 + 2]
push eax
push edi
mov ecx, esi
call fcn.3f30bf29
mov ecx, dword [esi + 0x242e8]
movzx eax, ax
movsx eax, word [ecx + eax*4 + 2]
push eax
push ebx
push ebx
push 0x34
mov ecx, esi
call fcn.3f309285
push ebx
push edi
mov ecx, esi
call fcn.3f30bf29
mov ecx, dword [esi + 0x242e8]
movzx eax, ax
movsx eax, word [ecx + eax*4 + 2]
mov ecx, dword [esi + 0x242e4]
shl eax, 7
cmp word [eax + ecx + 0x5a], 0xfc6
jne 0x3f35f118
push ebx
push edi
mov ecx, esi
call fcn.3f30bf29
mov ecx, dword [esi + 0x242e8]
movzx eax, ax
movsx eax, word [ecx + eax*4 + 2]
push eax
push 0x2d
mov ecx, esi
call fcn.3f370f8d
test ax, ax
jne 0x3f35f05c
push ebx
push edi
mov ecx, esi
call fcn.3f30bf29
mov ecx, dword [esi + 0x242e8]
movzx eax, ax
movsx eax, word [ecx + eax*4 + 2]
push eax
push 0x42
mov ecx, esi
call fcn.3f370f8d
test ax, ax
je 0x3f35f118
and dword [esp + 0x50], 0
push 1
mov ecx, esi
call fcn.3f309285
push ebx
push edi
mov ecx, esi
call fcn.3f30bf29
mov ecx, dword [esi + 0x242e4]
movzx eax, ax
mov dword [esp + 0x24], ecx
mov ecx, dword [esi + 0x242e8]
movsx eax, word [ecx + eax*4 + 2]
mov ecx, dword [esi + 0x242e4]
shl eax, 7
movsx eax, word [eax + ecx + 0x1a]
push 0
push eax
mov ecx, esi
call fcn.3f309285
movsx ecx, ax
mov eax, dword [esp + 0x24]
shl ecx, 7
movsx ecx, word [ecx + eax + 0x4a]
shl ecx, 7
add eax, ecx
test byte [eax + 0x6e], 1
je 0x3f35f0c7
mov dword [esp + 0x50], 1
jmp 0x3f35f0d5
test byte [eax + 0x6d], 0x80
je 0x3f35f0d5
mov dword [esp + 0x50], 2
push 0xffffffffffffffff
mov ecx, esi
call fcn.3f309285
cmp word [esp + 0x50], 1
jne 0x3f35f0f5
mov eax, dword [esi + 0x242e4]
lea eax, [eax + ebp + 0x6e]
or byte [eax], 1
jmp 0x3f35f118
cmp word [esp + 0x50], 2
jne 0x3f35f118
mov eax, dword [esi + 0x242e4]
lea eax, [eax + ebp + 0x6d]
or byte [eax], 0x80
jmp 0x3f35f118
push 0x34
call fcn.3f370f8d
test ax, ax
je 0x3f35f125
mov eax, dword [esi + 0x242e4]
lea eax, [eax + ebp + 0x7d]
or byte [eax], 2
cmp word [esp + 0x3c], 1
jne 0x3f35f13a
mov eax, dword [esi + 0x242e4]
lea eax, [eax + ebp + 0x77]
or byte [eax], 2
mov eax, dword [esi + 0x242e4]
lea ecx, [eax + ebp + 0x1a]
cmp word [ecx], 0
jne 0x3f35f15c
movsx edx, word [esi + 0x136]
shl edx, 7
mov ax, word [edx + eax + 0x1c]
mov word [ecx], ax
push ebx
push 0x101d
mov ecx, esi
call fcn.3f30bf29
test ax, ax
je 0x3f35f176
mov dword [esp + 0x44], 1
cmp word [esp + 0x18], 0xfd1
jne 0x3f35f1a8
mov eax, dword [esi + 0x242e4]
cmp word [eax + ebp + 0x1a], 0x1e63
jne 0x3f35f1a8
xor eax, eax
mov ax, word [esi + 0x136]
push 0
push 0
mov ecx, esi
push eax
push 0xfd1
call fcn.3f309285
inc dword [esp + 0x10]
and dword [esp + 0x34], 0
push ebx
push edi
mov ecx, esi
call fcn.3f30bf29
mov ecx, esi
push eax
call fcn.3f36f8a4
cmp ax, 1
jle 0x3f35f2aa
and dword [esp + 0x24], 0
push ebx
push edi
mov ecx, esi
call fcn.3f30bf29
movzx eax, ax
mov dword [esp + 0x30], eax
cmp dword [esp + 0x30], 0
je 0x3f35f295
movzx eax, word [esp + 0x30]
mov ecx, dword [esi + 0x242e8]
mov eax, dword [ecx + eax*4]
mov ecx, eax
sar ecx, 0x10
mov dword [esp + 0x50], ecx
and eax, 0xffff
push 1
mov ecx, esi
mov dword [esp + 0x34], eax
call fcn.3f309285
movsx eax, word [esp + 0x50]
mov ecx, dword [esi + 0x242e4]
shl eax, 7
mov dword [esp + 0x48], eax
movsx eax, word [eax + ecx + 0x1a]
push 0
push 0
push eax
mov ecx, esi
call fcn.3f34e92d
mov ecx, dword [esp + 0x4c]
push eax
mov eax, dword [esi + 0x242e4]
movsx eax, word [ecx + eax + 0x5a]
push eax
mov ecx, esi
call fcn.3f309285
test ax, ax
je 0x3f35f25d
mov dword [esp + 0x34], 1
push 0xffffffffffffffff
mov ecx, esi
call fcn.3f309285
cmp word [esp + 0x34], 0
je 0x3f35f28b
push 0
push dword [esp + 0x54]
mov ecx, esi
call fcn.3f36f7d1
mov ecx, esi
push eax
push dword [esp + 0x28]
call fcn.3f36f82f
mov dword [esp + 0x24], eax
and dword [esp + 0x34], 0
jmp 0x3f35f1e1
cmp word [esp + 0x24], 0
je 0x3f35f2aa
push dword [esp + 0x24]
mov ecx, esi
push ebx
push edi
call fcn.3f30c1b3
mov ecx, dword [esp + 0x20]
test cx, cx
jne 0x3f35f2fb
push ebx
push 0xfe6
mov ecx, esi
call fcn.3f30bf29
test ax, ax
jne 0x3f35f314
push ebx
push 0x101d
mov ecx, esi
call fcn.3f30bf29
test ax, ax
jne 0x3f35f314
movsx edx, word [esi + 0x136]
mov eax, dword [esi + 0x242e4]
xor ecx, ecx
mov cx, word [eax + ebp + 0x1a]
shl edx, 7
cmp cx, word [edx + eax + 0x1c]
je 0x3f35f314
mov dword [esp + 0x20], ecx
jmp 0x3f35f314
mov eax, dword [esi + 0x242e4]
add eax, ebp
test byte [eax + 0x75], 8
jne 0x3f35f30f
cmp cx, word [eax + 0x1a]
je 0x3f35f314
or dword [esp + 0x20], 0xffffffff
cmp word [esp + 0x18], 0xfc6
jne 0x3f35f367
cmp word [esp + 0x14], 0x1ad2
jne 0x3f35f367
mov eax, dword [esi + 0x242e4]
lea eax, [eax + ebp + 0x77]
and byte [eax], 0xbf
mov eax, dword [esi + 0x242e4]
lea eax, [eax + ebp + 0x77]
and byte [eax], 0x7f
mov eax, dword [esi + 0x242e4]
lea eax, [eax + ebp + 0x78]
or byte [eax], 1
mov eax, dword [esi + 0x242e4]
lea eax, [eax + ebp + 0x7b]
and byte [eax], 0x7f
mov eax, dword [esi + 0x242e4]
lea eax, [eax + ebp + 0x7c]
and byte [eax], 0xfd
mov eax, dword [esi + 0x242e4]
movsx eax, word [eax + ebp + 0x1a]
push 0x1f89
push eax
mov ecx, esi
call fcn.3f36d68e
test ax, ax
je 0x3f35f38e
push ebx
push 0x41
mov ecx, esi
call fcn.3f309285
push 0x1f8f
push dword [esp + 0x18]
mov ecx, esi
call fcn.3f36d68e
test ax, ax
je 0x3f35f3b0
mov eax, dword [esi + 0x242e4]
lea eax, [eax + ebp + 0x77]
and byte [eax], 0xfd
push ebx
push 0xfe6
mov ecx, esi
call fcn.3f30bf29
test ax, ax
je 0x3f35f447
push ebx
push edi
mov ecx, esi
call fcn.3f30bf29
mov ecx, dword [esi + 0x242e8]
movzx eax, ax
movsx eax, word [ecx + eax*4 + 2]
mov dword [esp + 0x50], eax
mov eax, dword [esi + 0x242e4]
push ebx
push 0xfe6
mov ecx, esi
mov dword [esp + 0x2c], eax
call fcn.3f30bf29
mov ecx, dword [esp + 0x50]
mov edx, dword [esp + 0x24]
shl ecx, 7
cmp ax, word [ecx + edx + 0x1a]
mov ecx, esi
je 0x3f35f42d
mov eax, edx
push ebx
lea eax, [eax + ebp + 0x7c]
or byte [eax], 0x40
push 0xfe6
call fcn.3f30bf29
mov ecx, dword [esi + 0x242e4]
mov word [ecx + ebp + 0x1a], ax
jmp 0x3f35f447
push 0
push ebx
push 0xfe6
call fcn.3f30c1b3
mov eax, dword [esi + 0x242e4]
lea eax, [eax + ebp + 0x7c]
and byte [eax], 0xbf
movsx eax, word [esi + 0x136]
mov ecx, dword [esi + 0x242e4]
shl eax, 7
movsx eax, word [eax + ecx + 0x1c]
push 0x1704
push eax
mov ecx, esi
call fcn.3f309285
test ax, ax
mov dword [esp + 0x30], eax
je 0x3f35f4c9
movsx eax, word [esi + 0x136]
mov ecx, dword [esi + 0x242e4]
shl eax, 7
movsx eax, word [eax + ecx + 0x1c]
push 0x1704
push eax
mov ecx, esi
call fcn.3f34d479
test ax, ax
je 0x3f35f4c9
mov eax, dword [esi + 0x242e4]
push ebx
lea eax, [eax + ebp + 0x70]
or byte [eax], 8
push 0x101c
mov ecx, esi
call fcn.3f30bf29
test ax, ax
jne 0x3f35f4c9
push dword [esp + 0x30]
mov ecx, esi
push ebx
push 0x101c
call fcn.3f30c1b3
xor eax, eax
cmp word [esp + 0x28], ax
jne 0x3f35f4f8
cmp word [esp + 0x1c], ax
jne 0x3f35f503
mov eax, dword [esi + 0x242e4]
lea eax, [eax + ebp + 0x7c]
and byte [eax], 0xdf
mov eax, dword [esi + 0x242e4]
lea eax, [eax + ebp + 0x71]
and byte [eax], 0xfb
jmp 0x3f35f637
cmp word [esp + 0x1c], ax
je 0x3f35f5d7
mov eax, dword [esi + 0x242e4]
movsx eax, word [eax + ebp + 0x1a]
push eax
mov ecx, esi
call fcn.3f34d4de
push ebx
push 0xff3
mov ecx, esi
mov dword [esp + 0x58], eax
mov eax, dword [esi + 0x242e4]
lea eax, [eax + ebp + 0x7c]
or byte [eax], 0x20
call fcn.3f30bf29
test ax, ax
jne 0x3f35f5d7
xor eax, eax
mov ax, word [esi + 0x136]
mov ecx, esi
push eax
call fcn.3f309285
test ax, ax
jne 0x3f35f5d7
mov ax, word [esp + 0x38]
cmp word [esp + 0x50], ax
jge 0x3f35f5d7
movsx eax, word [esi + 0x136]
mov ecx, dword [esi + 0x242e4]
push dword [esp + 0x50]
shl eax, 7
movsx eax, word [eax + ecx + 0x1c]
push 1
push eax
mov ecx, esi
call fcn.3f309285
mov ecx, esi
push eax
call fcn.3f3511e0
test ax, ax
je 0x3f35f5d7
mov eax, dword [esp + 0x50]
mov ecx, dword [esp + 0x38]
sub ecx, eax
push ecx
mov ecx, dword [esi + 0x242e4]
inc eax
push eax
movsx eax, word [esi + 0x136]
shl eax, 7
movsx eax, word [eax + ecx + 0x1c]
push eax
mov ecx, esi
call fcn.3f309285
mov ecx, esi
push eax
call fcn.3f3511e0
test ax, ax
jne 0x3f35f5d7
push ebx
push 0x1334
mov ecx, esi
call fcn.3f309285
mov eax, dword [esi + 0x242e4]
test byte [eax + ebp + 0x7c], 0x40
je 0x3f35f622
push ebx
push 0x100f
mov ecx, esi
call fcn.3f30bf29
test ax, ax
je 0x3f35f615
push 0x3f35be82
push ebx
push 0x100f
mov ecx, esi
call fcn.3f30bf29
mov ecx, esi
push eax
call fcn.3f36d6bc
test ax, ax
je 0x3f35f622
mov eax, dword [esi + 0x242e4]
lea eax, [eax + ebp + 0x7c]
or byte [eax], 0x80
cmp word [esp + 0x28], 0
je 0x3f35f637
mov eax, dword [esi + 0x242e4]
lea eax, [eax + ebp + 0x6f]
or byte [eax], 0x80
cmp word [esp + 0x18], 0xfbf
jne 0x3f35f66e
mov eax, dword [esi + 0x242e4]
test byte [eax + ebp + 0x7c], 0x20
je 0x3f35f6a1
push ebx
push 0xff3
mov ecx, esi
call fcn.3f30bf29
test ax, ax
jne 0x3f35f6a1
mov eax, dword [esi + 0x242e4]
lea eax, [eax + ebp + 0x71]
or byte [eax], 4
jmp 0x3f35f6a1
cmp word [esp + 0x18], 0xfc6
jne 0x3f35f6a1
mov eax, dword [esi + 0x242e4]
movsx eax, word [eax + ebp + 0x1a]
push 0xd91
push eax
mov ecx, esi
call fcn.3f36d68e
test ax, ax
je 0x3f35f6a1
mov eax, dword [esi + 0x242e4]
lea eax, [eax + ebp + 0x78]
or byte [eax], 1
mov eax, dword [esi + 0x242e4]
lea eax, [eax + ebp + 0x7c]
and byte [eax], 0xef
mov eax, dword [esi + 0x242e4]
movsx eax, word [eax + ebp + 0x1a]
push 0x1f92
push eax
mov ecx, esi
call fcn.3f34d73e
mov ecx, esi
push eax
call fcn.3f36d68e
test ax, ax
mov ecx, esi
je 0x3f35f6e8
push ebx
push 0x11fc
call fcn.3f309285
push ebx
push 0x11b0
jmp 0x3f35f711
mov eax, dword [esi + 0x242e4]
movsx eax, word [eax + ebp + 0x1a]
push 0x1fa2
push eax
call fcn.3f34d73e
mov ecx, esi
push eax
call fcn.3f36d68e
test ax, ax
je 0x3f35f718
push ebx
push 0x11fc
mov ecx, esi
call fcn.3f309285
cmp word [esp + 0x18], 0xfc6
je 0x3f35f72a
cmp word [esp + 0x18], 0xfca
jne 0x3f35f788
mov eax, dword [esi + 0x242e4]
add eax, ebp
test byte [eax + 0x6a], 0x60
je 0x3f35f788
mov cl, byte [eax + 0x7c]
test cl, 6
je 0x3f35f788
test byte [eax + 0x7b], 0x80
jne 0x3f35f788
test cl, 1
jne 0x3f35f788
push ebx
push 0x101c
mov ecx, esi
call fcn.3f30bf29
test ax, ax
jne 0x3f35f788
mov eax, dword [esi + 0x242e4]
cmp word [eax + ebp + 0x5c], 0x1e64
je 0x3f35f788
push ebx
push 0x44
mov ecx, esi
call fcn.3f370f8d
test ax, ax
jne 0x3f35f788
push ebx
push 0x1278
mov ecx, esi
call fcn.3f309285
push ebx
mov ecx, esi
call fcn.3f309285
push ebx
push 0x100f
mov ecx, esi
call fcn.3f30bf29
test ax, ax
je 0x3f35f8a2
push ebx
push 0x100f
mov ecx, esi
call fcn.3f30bf29
movzx eax, ax
mov dword [esp + 0x34], eax
cmp dword [esp + 0x34], 0
je 0x3f35f849
movzx eax, word [esp + 0x34]
mov ecx, dword [esi + 0x242e8]
mov eax, dword [ecx + eax*4]
mov ecx, eax
sar ecx, 0x10
push 0
mov dword [esp + 0x54], ecx
and eax, 0xffff
push ecx
mov ecx, esi
mov dword [esp + 0x3c], eax
call fcn.3f36f7d1
mov ecx, esi
push eax
push ebx
push 0xfe7
call fcn.3f30bf29
mov ecx, esi
push eax
call fcn.3f36f82f
mov ecx, esi
push eax
push ebx
push 0xfe7
call fcn.3f30c1b3
mov eax, dword [esi + 0x242e4]
lea ecx, [eax + ebp]
test byte [ecx + 0x7c], 0x20
je 0x3f35f7ba
movsx edx, word [esp + 0x50]
shl edx, 7
add eax, edx
test byte [eax + 0x7c], 0x40
je 0x3f35f7ba
mov ax, word [eax + 0x1a]
cmp word [ecx + 0x1a], ax
je 0x3f35f7ba
mov word [ecx + 0x1a], ax
jmp 0x3f35f7ba
push ebx
push 0xfe7
mov ecx, esi
call fcn.3f30bf29
mov ecx, dword [esi + 0x242e4]
push eax
movsx eax, word [esi + 0x136]
shl eax, 7
movsx eax, word [eax + ecx + 0x1c]
push eax
mov ecx, esi
call fcn.3f36fc3f
test ax, ax
je 0x3f35f893
movsx ecx, word [esi + 0x136]
mov eax, dword [esi + 0x242e4]
shl ecx, 7
mov cx, word [ecx + eax + 0x1c]
mov word [eax + ebp + 0x1a], cx
push 0
push ebx
push 0x100f
mov ecx, esi
call fcn.3f30c1b3
push 0
push ebx
push 0xff0
mov ecx, esi
call fcn.3f30c1b3
mov eax, dword [esi + 0x242e4]
mov cx, word [esi + 0x136]
mov word [eax + ebp + 0x1e], cx
jmp 0x3f35fd4f
cmp bp, 0xfbf
jne 0x3f35fd4f
mov ebp, dword [esp + 0x14]
push 0x1fa6
push ebp
mov ecx, esi
call fcn.3f36d68e
test ax, ax
je 0x3f35f9bf
push 0
mov ecx, esi
call fcn.3f309285
mov ecx, dword [esi + 0x242e4]
mov ebx, eax
movsx eax, bx
shl eax, 7
cmp word [esp + 0x28], 0
mov word [eax + ecx], 0x13af
mov ecx, dword [esi + 0x242e4]
mov word [ecx + eax + 0x1a], bp
jne 0x3f35f925
cmp word [esp + 0x1c], 0
je 0x3f35f93f
mov ecx, dword [esi + 0x242e4]
lea ecx, [ecx + eax + 0x7c]
or byte [ecx], 0x20
mov ecx, dword [esi + 0x242e4]
lea ecx, [ecx + eax + 0x71]
or byte [ecx], 4
mov ecx, dword [esi + 0x242e4]
lea ecx, [ecx + eax + 0x6d]
or byte [ecx], 4
mov ecx, dword [esi + 0x242e4]
lea eax, [ecx + eax + 0x6d]
or byte [eax], 8
push ebx
push 0x11fc
mov ecx, esi
call fcn.3f309285
push ebx
push 0x11b0
mov ecx, esi
call fcn.3f309285
movsx eax, word [esi + 0x136]
mov ecx, dword [esi + 0x242e4]
shl eax, 7
mov word [esi + 0x2a8f8], bx
mov word [eax + ecx + 0x46], bx
mov cx, word [esi + 0x136]
mov eax, dword [esi + 0x242e4]
movsx edx, cx
shl edx, 7
mov bx, word [edx + eax + 0x46]
movsx edx, bx
shl edx, 7
mov dword [esp + 0x10], 1
mov word [edx + eax + 0x1e], cx
jmp 0x3f35fd2f
movsx eax, word [esi + 0x136]
mov ecx, dword [esi + 0x242e4]
shl eax, 7
movsx eax, word [eax + ecx + 0x1c]
push 0x1802
push eax
mov ecx, esi
call fcn.3f35bdbc
test ax, ax
je 0x3f35fbed
xor eax, eax
mov ax, word [esi + 0xc6]
mov ecx, esi
push eax
call fcn.3f309285
push eax
mov ecx, esi
call fcn.3f309285
test ax, ax
mov ecx, esi
mov dword [esp + 0x48], eax
je 0x3f35faf9
push 0
mov dword [esp + 0x14], 1
call fcn.3f309285
mov ecx, dword [esi + 0x242e4]
movsx ebp, ax
shl ebp, 7
mov word [ecx + ebp], 0x13af
mov ecx, dword [esi + 0x242e4]
mov dx, word [esi + 0xc6]
push eax
mov word [ecx + ebp + 0x1a], dx
push 0x12d8
mov ecx, esi
mov dword [esp + 0x58], eax
call fcn.3f309285
movzx eax, word [esp + 0x48]
mov ecx, dword [esi + 0x242e8]
mov ax, word [ecx + eax*4 + 2]
mov edx, dword [esi + 0x242e4]
mov word [edx + ebp + 0x44], ax
xor eax, eax
mov ax, word [esi + 0xc6]
mov ecx, esi
push eax
call fcn.3f34d4de
mov ecx, esi
push eax
push dword [esp + 0x54]
push 0xfc5
call fcn.3f30c1b3
push dword [esp + 0x50]
mov ecx, esi
push 0xfc5
call fcn.3f30bf29
cmp ax, 3
je 0x3f35fabf
push dword [esp + 0x50]
mov ecx, esi
push 0xfc5
call fcn.3f30bf29
cmp ax, 4
jne 0x3f35facc
mov eax, dword [esi + 0x242e4]
lea eax, [eax + ebp + 0x7f]
or byte [eax], 0x20
mov eax, dword [esi + 0x242e4]
lea eax, [eax + ebp + 0x6d]
or byte [eax], 4
mov eax, dword [esi + 0x242e4]
lea eax, [eax + ebp + 0x6d]
or byte [eax], 8
mov eax, dword [esi + 0x242e4]
lea ebp, [eax + ebp + 0x6d]
or byte [ebp], 0x10
jmp 0x3f35fbc8
xor eax, eax
mov ax, word [esi + 0xc6]
push eax
call fcn.3f351540
test ax, ax
je 0x3f35fd4f
mov ebp, dword [esp + 0x38]
mov ecx, dword [esi + 0x242e4]
lea eax, [ebp - 1]
push eax
movsx eax, word [esi + 0x136]
shl eax, 7
movsx eax, word [eax + ecx + 0x1c]
push 1
push eax
mov ecx, esi
call fcn.3f309285
cmp bp, 2
mov word [esi + 0xc6], ax
jle 0x3f35fd4f
push eax
mov ecx, esi
call fcn.3f3511e0
test ax, ax
je 0x3f35fd4f
push 0
mov ecx, esi
mov dword [esp + 0x14], 1
call fcn.3f309285
mov ecx, dword [esi + 0x242e4]
movsx ebp, ax
shl ebp, 7
mov word [ecx + ebp], 0x13af
mov ecx, dword [esi + 0x242e4]
mov dx, word [esi + 0xc6]
push eax
mov word [ecx + ebp + 0x1a], dx
push 0x12d8
mov ecx, esi
mov dword [esp + 0x58], eax
call fcn.3f309285
mov eax, dword [esi + 0x242e4]
lea eax, [eax + ebp + 0x6f]
or byte [eax], 0x80
mov eax, dword [esi + 0x242e4]
lea eax, [eax + ebp + 0x6d]
or byte [eax], 0x10
mov eax, dword [esi + 0x242e4]
lea ebp, [eax + ebp + 0x7c]
or byte [ebp], 8
movsx ecx, word [esi + 0x136]
mov eax, dword [esp + 0x50]
mov edx, dword [esi + 0x242e4]
shl ecx, 7
mov word [esi + 0x2a8f8], ax
mov word [ecx + edx + 0x46], ax
jmp 0x3f35fd4f
cmp word [esi + 0x74e], 0
jne 0x3f35fd4f
push 0x1e65
push ebp
mov ecx, esi
call fcn.3f35bdbc
test ax, ax
jne 0x3f35fc47
push 0x1e66
push ebp
mov ecx, esi
call fcn.3f35bdbc
test ax, ax
jne 0x3f35fc47
push 0x1e67
push ebp
mov ecx, esi
call fcn.3f35bdbc
test ax, ax
jne 0x3f35fc47
push 0x1e68
push ebp
mov ecx, esi
call fcn.3f35bdbc
test ax, ax
je 0x3f35fd4f
xor eax, eax
mov ax, word [esi + 0xc6]
mov ecx, esi
push eax
call fcn.3f309285
test ax, ax
je 0x3f35fd4f
push 0
mov ecx, esi
mov dword [esp + 0x14], 1
call fcn.3f309285
movsx ebp, ax
shl ebp, 7
push 0
mov dword [esp + 0x54], eax
mov eax, dword [esi + 0x242e4]
mov word [eax + ebp], 0x13af
mov eax, dword [esi + 0x242e4]
mov cx, word [esi + 0xc6]
mov word [eax + ebp + 0x1a], cx
movsx eax, word [esi + 0x136]
mov ecx, dword [esi + 0x242e4]
shl eax, 7
movsx eax, word [eax + ecx + 0x1c]
push eax
mov ecx, esi
call fcn.3f309285
mov ecx, esi
push eax
push dword [esp + 0x54]
push 0x10af
call fcn.3f30c1b3
push dword [esp + 0x50]
mov ecx, esi
push 0x12d8
call fcn.3f309285
mov eax, dword [esi + 0x242e4]
lea eax, [eax + ebp + 0x7e]
or byte [eax], 0x80
mov eax, dword [esi + 0x242e4]
lea eax, [eax + ebp + 0x6d]
or byte [eax], 4
mov eax, dword [esi + 0x242e4]
lea eax, [eax + ebp + 0x6d]
or byte [eax], 8
mov eax, dword [esi + 0x242e4]
lea ebp, [eax + ebp + 0x6d]
or byte [ebp], 0x10
movsx ecx, word [esi + 0x136]
mov eax, dword [esp + 0x50]
mov edx, dword [esi + 0x242e4]
shl ecx, 7
mov word [esi + 0x2a8f8], ax
mov word [ecx + edx + 0x46], ax
test bx, bx
je 0x3f35fd4f
cmp word [esp + 0x3c], 0
je 0x3f35fd4f
mov ecx, dword [esi + 0x242e4]
movsx eax, bx
shl eax, 7
lea eax, [eax + ecx + 0x77]
or byte [eax], 2
movsx eax, word [esi + 0x136]
mov ecx, dword [esi + 0x242e4]
shl eax, 7
add eax, ecx
cmp word [eax + 0x1c], 0x19eb
jne 0x3f35fd73
and word [eax + 0x46], 0
jmp 0x3f35fe48
push 0x1fad
push dword [esp + 0x18]
mov ecx, esi
call fcn.3f36d68e
test ax, ax
je 0x3f35fe48
movsx eax, word [esi + 0x136]
mov ecx, dword [esi + 0x242e4]
shl eax, 7
cmp word [eax + ecx + 0x46], 0
jne 0x3f35fe1e
push 0
mov ecx, esi
call fcn.3f309285
mov ecx, dword [esi + 0x242e4]
mov ebp, eax
movsx eax, bp
shl eax, 7
mov word [eax + ecx], 0x13af
movsx edx, word [esi + 0x136]
mov ecx, dword [esi + 0x242e4]
shl edx, 7
mov dx, word [edx + ecx + 0x1c]
mov word [ecx + eax + 0x1a], dx
mov ecx, dword [esi + 0x242e4]
lea ecx, [ecx + eax + 0x6d]
or byte [ecx], 4
mov ecx, dword [esi + 0x242e4]
lea eax, [ecx + eax + 0x6d]
or byte [eax], 8
push ebp
push 0x12d8
mov ecx, esi
call fcn.3f309285
movsx eax, word [esi + 0x136]
mov ecx, dword [esi + 0x242e4]
shl eax, 7
mov word [esi + 0x2a8f8], bp
mov word [eax + ecx + 0x46], bp
movsx eax, word [esi + 0x136]
mov ecx, dword [esi + 0x242e4]
shl eax, 7
movsx eax, word [eax + ecx + 0x46]
push eax
push 0x11d1
mov ecx, esi
mov dword [esp + 0x18], 1
call fcn.3f309285
test bx, bx
je 0x3f35eb8c
cmp word [esp + 0x40], 0
je 0x3f35eb8c
mov ecx, dword [esi + 0x242e4]
movsx eax, bx
shl eax, 7
lea eax, [eax + ecx + 0x71]
or byte [eax], 2
jmp 0x3f35eb8c
movzx ebx, word [esi + 0x20]
mov ebp, 0x101d
xor edx, edx
cmp ebx, edx
je 0x3f35ff0e
mov ecx, dword [esi + 0x242e8]
movzx eax, bx
mov eax, dword [ecx + eax*4]
mov ecx, eax
and eax, 0xffff
mov ebx, eax
xor eax, eax
mov ax, word [esi + 0x136]
push edx
sar ecx, 0x10
push eax
push ecx
mov ecx, esi
call fcn.3f309285
mov edi, eax
test di, di
je 0x3f35fe7e
cmp word [esp + 0x44], 0
je 0x3f35fee0
push edi
push ebp
mov ecx, esi
call fcn.3f30bf29
test ax, ax
jne 0x3f35fee0
xor eax, eax
mov ax, word [esi + 0x78]
mov ecx, esi
push eax
push edi
push ebp
call fcn.3f30c1b3
push edi
mov ecx, esi
call fcn.3f309285
push edi
push ebp
mov ecx, esi
call fcn.3f30bf29
test ax, ax
je 0x3f35fe7e
mov ecx, dword [esi + 0x242e4]
movsx eax, di
shl eax, 7
lea eax, [eax + ecx + 0x77]
or byte [eax], 4
jmp 0x3f35fe7e
cmp word [esi + 0x74e], dx
je 0x3f3605c0
cmp word [esp + 0x10], dx
jne 0x3f3605c0
mov ebx, dword [esp + 0x14]
xor edi, edi
inc edi
push edi
push edi
push ebx
mov ecx, esi
call fcn.3f309285
mov ebp, 0x1723
cmp ax, bp
je 0x3f35ff8d
xor eax, eax
mov ax, word [esi + 0x1b6]
mov ecx, esi
push eax
push edi
push edi
push ebx
call fcn.3f309285
mov ecx, esi
push eax
call fcn.3f36f9b3
test eax, eax
jne 0x3f3605c0
push 0x1735
push ebx
mov ecx, esi
call fcn.3f34d479
test ax, ax
je 0x3f35ff8d
push 0x1e69
push ebx
mov ecx, esi
call fcn.3f34d479
test ax, ax
je 0x3f3605c0
xor eax, eax
mov ax, word [esi + 0x136]
mov ecx, esi
push eax
call fcn.3f357ca3
test ax, ax
jne 0x3f3605c0
push ebx
mov ecx, esi
call fcn.3f357d89
test ax, ax
mov ecx, esi
je 0x3f360041
push 0
call fcn.3f309285
push 0x195a
mov ebx, eax
mov eax, dword [esi + 0x242e4]
movsx edi, bx
shl edi, 7
lea eax, [eax + edi + 0x6d]
or byte [eax], 4
mov eax, dword [esi + 0x242e4]
lea eax, [eax + edi + 0x6d]
or byte [eax], 8
movsx ecx, word [esi + 0x136]
mov eax, dword [esi + 0x242e4]
shl ecx, 7
mov cx, word [ecx + eax + 0x1c]
mov word [eax + edi + 0x1a], cx
mov eax, dword [esi + 0x242e4]
push ebx
push 0xfc2
mov ecx, esi
mov word [edi + eax], 0x13af
call fcn.3f30c1b3
mov eax, dword [esi + 0x242e4]
movsx eax, word [eax + edi + 0x1a]
push ebx
push eax
mov ecx, esi
call fcn.3f309285
push ebx
push 0x12d7
mov ecx, esi
call fcn.3f309285
jmp 0x3f360563
push 0x1e6a
push ebx
call fcn.3f34d479
test ax, ax
jne 0x3f360196
push 0x1e6b
push ebx
mov ecx, esi
call fcn.3f34d479
test ax, ax
jne 0x3f360196
push 0x1e6c
push ebx
mov ecx, esi
call fcn.3f309285
test ax, ax
jne 0x3f3600db
push 0x1e6d
push ebx
mov ecx, esi
call fcn.3f309285
test ax, ax
jne 0x3f3600db
push 0x1e6e
push ebx
mov ecx, esi
call fcn.3f309285
test ax, ax
jne 0x3f3600db
push 0x1e6f
push ebx
mov ecx, esi
call fcn.3f309285
test ax, ax
je 0x3f3600c5
push 0x1e70
push ebx
mov ecx, esi
call fcn.3f309285
test ax, ax
je 0x3f3600db
push 0x1e71
push ebx
mov ecx, esi
call fcn.3f309285
test ax, ax
je 0x3f360196
push 0
mov ecx, esi
call fcn.3f309285
mov ecx, esi
mov ebp, eax
mov eax, dword [esi + 0x242e4]
movsx edi, bp
shl edi, 7
lea eax, [eax + edi + 0x6d]
or byte [eax], 4
mov eax, dword [esi + 0x242e4]
push ebp
lea eax, [eax + edi + 0x6d]
or byte [eax], 8
push 0x12d7
call fcn.3f309285
movsx ecx, word [esi + 0x136]
mov eax, dword [esi + 0x242e4]
shl ecx, 7
cmp word [esp + 0x1c], 0
mov cx, word [ecx + eax + 0x1c]
mov word [edi + eax + 0x1a], cx
mov eax, dword [esi + 0x242e4]
mov word [edi + eax], 0x13af
je 0x3f360156
cmp word [esp + 0x40], 0
je 0x3f360156
mov eax, dword [esi + 0x242e4]
lea edi, [eax + edi + 0x71]
or byte [edi], 4
push ebx
mov ecx, esi
call fcn.3f357e26
test ax, ax
je 0x3f360175
push 0x19d7
push ebp
push 0xfc2
mov ecx, esi
call fcn.3f30c1b3
movsx eax, word [esi + 0x136]
mov ecx, dword [esi + 0x242e4]
shl eax, 7
mov word [esi + 0x2a8f8], bp
mov word [eax + ecx + 0x46], bp
jmp 0x3f36057f
mov edi, 0x1e72
push edi
push ebx
mov ecx, esi
call fcn.3f34edb0
test ax, ax
mov ecx, esi
je 0x3f3602bf
push ebp
push edi
push ebx
call fcn.3f34edb0
mov ecx, esi
push eax
call fcn.3f34ee0a
test ax, ax
mov word [esi + 0xc6], ax
je 0x3f36057f
xor ebp, ebp
push ebp
push eax
mov ecx, esi
call fcn.3f309285
mov ecx, dword [esi + 0x242e4]
mov edi, eax
movsx eax, di
shl eax, 7
cmp word [eax + ecx + 0x46], bp
jne 0x3f360224
push edi
mov ebx, 0x104c
push ebx
mov ecx, esi
call fcn.3f30bf29
test ax, ax
je 0x3f360224
push edi
push ebx
mov ecx, esi
call fcn.3f30bf29
mov ecx, dword [esi + 0x242e8]
movzx eax, ax
movsx eax, word [ecx + eax*4 + 2]
push ebp
push eax
mov ecx, esi
call fcn.3f309285
mov edi, eax
mov eax, dword [esi + 0x242e4]
movsx edi, di
shl edi, 7
movsx eax, word [edi + eax + 0x46]
push eax
push 0x11b0
mov ecx, esi
call fcn.3f30beb2
test ax, ax
je 0x3f36057f
mov eax, dword [esi + 0x242e4]
movsx edi, word [edi + eax + 0x46]
movsx ecx, di
shl ecx, 7
cmp word [ecx + eax + 0x5c], 0x1e73
jne 0x3f36057f
push edi
mov ecx, esi
call fcn.3f309285
mov edx, dword [esi + 0x242e4]
movsx ecx, ax
shl ecx, 7
lea edx, [ecx + edx + 0x6d]
or byte [edx], 0x10
mov edx, dword [esi + 0x242e4]
lea edx, [ecx + edx + 0x6d]
and byte [edx], 0xfb
mov edx, dword [esi + 0x242e4]
lea ecx, [ecx + edx + 0x6d]
and byte [ecx], 0xf7
movsx ecx, word [esi + 0x136]
mov edx, dword [esi + 0x242e4]
shl ecx, 7
mov word [esi + 0x2a8f8], ax
mov word [ecx + edx + 0x46], ax
jmp 0x3f36057f
xor eax, eax
mov ax, word [esi + 0x1b6]
push eax
push 1
push ebx
call fcn.3f34d4de
mov ecx, esi
push eax
push ebx
call fcn.3f309285
mov ecx, esi
push eax
call fcn.3f36f9b3
test eax, eax
jne 0x3f36057f
push dword [esp + 0x30]
mov ecx, esi
push ebx
call fcn.3f35bde2
test ax, ax
mov ecx, esi
je 0x3f360395
push 0
call fcn.3f309285
mov ebx, eax
mov eax, dword [esi + 0x242e4]
movsx edi, bx
shl edi, 7
lea eax, [edi + eax + 0x6d]
or byte [eax], 4
mov eax, dword [esi + 0x242e4]
lea eax, [edi + eax + 0x6d]
or byte [eax], 8
movsx ecx, word [esi + 0x136]
mov eax, dword [esi + 0x242e4]
shl ecx, 7
mov cx, word [ecx + eax + 0x1c]
mov word [edi + eax + 0x1a], cx
mov eax, dword [esi + 0x242e4]
push ebx
push 0x12d7
mov ecx, esi
mov word [edi + eax], 0x13af
call fcn.3f309285
cmp word [esp + 0x1c], 0
je 0x3f360563
mov eax, dword [esi + 0x242e4]
lea eax, [edi + eax + 0x7e]
or byte [eax], 2
mov eax, dword [esi + 0x242e4]
push ebx
lea eax, [edi + eax + 0x7e]
or byte [eax], 8
push 0x11a4
mov ecx, esi
call fcn.3f309285
jmp 0x3f360556
push ebx
call fcn.3f357edd
test ax, ax
mov ecx, esi
je 0x3f36040d
push 0
call fcn.3f309285
mov ebx, eax
mov eax, dword [esi + 0x242e4]
movsx edi, bx
shl edi, 7
lea eax, [edi + eax + 0x6d]
or byte [eax], 4
mov eax, dword [esi + 0x242e4]
lea eax, [edi + eax + 0x6d]
or byte [eax], 8
movsx ecx, word [esi + 0x136]
mov eax, dword [esi + 0x242e4]
shl ecx, 7
mov cx, word [ecx + eax + 0x1c]
mov word [edi + eax + 0x1a], cx
mov eax, dword [esi + 0x242e4]
movsx eax, word [edi + eax + 0x1a]
push ebx
push eax
mov ecx, esi
call fcn.3f309285
push ebx
push 0x12d7
mov ecx, esi
call fcn.3f309285
push 0x1aa7
jmp 0x3f360487
push ebx
call fcn.3f357e26
test ax, ax
je 0x3f3604a5
push 0
mov ecx, esi
call fcn.3f309285
mov ebx, eax
mov eax, dword [esi + 0x242e4]
movsx edi, bx
shl edi, 7
lea eax, [edi + eax + 0x6d]
or byte [eax], 4
mov eax, dword [esi + 0x242e4]
lea eax, [edi + eax + 0x6d]
or byte [eax], 8
movsx ecx, word [esi + 0x136]
mov eax, dword [esi + 0x242e4]
shl ecx, 7
mov cx, word [ecx + eax + 0x1c]
mov word [edi + eax + 0x1a], cx
mov eax, dword [esi + 0x242e4]
movsx eax, word [edi + eax + 0x1a]
push ebx
push eax
mov ecx, esi
call fcn.3f33156c
push ebx
push 0x12d7
mov ecx, esi
call fcn.3f309285
push 0x19d7
mov eax, dword [esi + 0x242e4]
push ebx
push 0xfc2
mov ecx, esi
mov word [edi + eax], 0x13af
call fcn.3f30c1b3
jmp 0x3f360563
cmp word [esi + 0x74e], 0
jne 0x3f36057f
push 0x1704
push ebx
mov ecx, esi
call fcn.3f34d479
test ax, ax
jne 0x3f36057f
push 0x1e5c
push ebx
mov ecx, esi
call fcn.3f34d722
test ax, ax
jne 0x3f36057f
push ebx
mov ecx, esi
call fcn.3f35d718
test ax, ax
je 0x3f36057f
push 0
mov ecx, esi
call fcn.3f309285
mov ebx, eax
mov eax, dword [esi + 0x242e4]
movsx edi, bx
shl edi, 7
lea eax, [edi + eax + 0x6d]
or byte [eax], 4
mov eax, dword [esi + 0x242e4]
lea eax, [edi + eax + 0x6d]
or byte [eax], 8
movsx ecx, word [esi + 0x136]
mov eax, dword [esi + 0x242e4]
shl ecx, 7
mov cx, word [ecx + eax + 0x1c]
push ebx
mov word [edi + eax + 0x1a], cx
push 0x12d7
mov ecx, esi
call fcn.3f309285
cmp word [esp + 0x1c], 0
mov eax, dword [esi + 0x242e4]
mov word [edi + eax], 0x13af
je 0x3f360563
mov eax, dword [esi + 0x242e4]
lea edi, [edi + eax + 0x71]
or byte [edi], 4
movsx eax, word [esi + 0x136]
mov ecx, dword [esi + 0x242e4]
shl eax, 7
mov word [esi + 0x2a8f8], bx
mov word [eax + ecx + 0x46], bx
movsx eax, word [esi + 0x136]
mov ecx, dword [esi + 0x242e4]
shl eax, 7
movsx eax, word [eax + ecx + 0x46]
push eax
mov ecx, esi
call fcn.3f358a57
test ax, ax
je 0x3f3605c0
movsx ecx, word [esi + 0x136]
mov eax, dword [esi + 0x242e4]
shl ecx, 7
movsx ecx, word [ecx + eax + 0x46]
shl ecx, 7
lea eax, [ecx + eax + 0x77]
or byte [eax], 2
cmp word [esp + 0x20], 0
pop ebp
jle 0x3f3605dc
cmp word [esp + 0xc], 1
jle 0x3f3605dc
push dword [esp + 0x1c]
mov ecx, esi
call fcn.3f309285
pop edi
pop esi
pop ebx
add esp, 0x3c
ret 4