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

Disassembly:
sub esp, 0x1c
push esi
mov esi, ecx
mov ax, word [esi + 0xb4]
push edi
xor edi, edi
cmp word [esi + 0x5e], di
mov dword [esp + 0x1c], edi
mov dword [esp + 0x10], edi
mov dword [esp + 0xc], edi
mov word [esi + 0x58], ax
mov word [esi + 0x56], di
mov word [esi + 0x5a], di
mov word [esi + 0x5c], di
jne 0x3f319bb6
push ebx
push ebp
push edi
push dword [esp + 0x34]
call fcn.3f3840e6
mov word [esi + 0x3c], di
movzx ebx, ax
mov dword [esp + 0x1c], eax
cmp ebx, edi
mov ecx, dword [esi + 0x242e8]
je 0x3f317d48
movzx eax, bx
mov eax, dword [ecx + eax*4]
mov ebp, eax
sar ebp, 0x10
and eax, 0xffff
mov ebx, eax
mov eax, dword [esi + 0x242e4]
movsx edi, bp
shl edi, 7
movsx eax, word [edi + eax + 2]
push eax
push ebp
push 0x101a
mov ecx, esi
mov dword [esp + 0x2c], ebx
call fcn.3f30c1b3
mov eax, dword [esi + 0x242e4]
add eax, edi
mov cx, word [eax + 0x22]
test cx, cx
jne 0x3f317c90
cmp word [eax + 0x20], cx
jne 0x3f317c8b
cmp word [eax + 0x24], cx
jne 0x3f317c8b
test bp, bp
je 0x3f317c7c
xor eax, eax
mov ax, word [esi + 0x3c]
mov ecx, esi
push eax
push ebp
call fcn.3f36f7d1
jmp 0x3f317c80
mov ax, word [esi + 0x3c]
mov word [esi + 0x3c], ax
xor edi, edi
jmp 0x3f317c06
test cx, cx
je 0x3f317cba
push 0
push ecx
mov ecx, esi
call fcn.3f36f7d1
mov ecx, esi
push eax
mov eax, dword [esi + 0x242e4]
movsx eax, word [edi + eax + 0x20]
push eax
call fcn.3f3840e6
mov ecx, esi
push eax
call fcn.3f36f82f
mov ebx, eax
jmp 0x3f317cbe
mov bx, word [eax + 0x20]
mov eax, dword [esi + 0x242e4]
movsx eax, word [edi + eax + 0x24]
push eax
mov ecx, esi
call fcn.3f3840e6
mov ecx, esi
push eax
push ebx
call fcn.3f3840e6
mov ecx, esi
push eax
call fcn.3f36f82f
mov ecx, esi
push eax
push ebp
push 0xff1
call fcn.3f30c1b3
mov eax, dword [esi + 0x242e4]
movsx eax, word [edi + eax + 0x38]
push eax
push ebp
push 0xff7
mov ecx, esi
call fcn.3f30c1b3
push ebp
push 0xfd8
mov ecx, esi
call fcn.3f30bf29
mov ecx, esi
push eax
push ebp
push 0xfe8
call fcn.3f30c1b3
push ebp
push 0xfe2
mov ecx, esi
call fcn.3f30bf29
mov ecx, esi
push eax
push ebp
push 0xff8
call fcn.3f30c1b3
mov ebx, dword [esp + 0x20]
jmp 0x3f317c84
movzx eax, word [esi + 4]
movsx eax, word [ecx + eax*4 + 2]
push eax
push 0xff1
mov ecx, esi
call fcn.3f30bf29
mov ecx, dword [esi + 0x242e8]
movzx eax, ax
xor ebx, ebx
mov bx, word [ecx + eax*4 + 2]
mov ecx, esi
push ebx
push 0x12ff
call fcn.3f30beb2
test ax, ax
je 0x3f317dae
mov edi, dword [esi + 0x242e4]
push ebx
mov ecx, esi
call fcn.3f36e42a
movsx eax, ax
shl eax, 7
cmp word [eax + edi + 0x1a], 0x173a
jne 0x3f317dae
movsx eax, bx
shl eax, 7
mov ax, word [eax + edi + 0xe]
inc ax
mov word [esi + 0x66], ax
xor ebp, ebp
cmp word [esi + 0x7b0], bp
mov ebx, 0x3f1017b4
je 0x3f317dfc
movzx edi, word [esi + 0x3c]
cmp edi, ebp
je 0x3f317dfc
mov ecx, dword [esi + 0x242e8]
movzx eax, di
mov eax, dword [ecx + eax*4]
mov ecx, eax
push ebx
sar ecx, 0x10
push ebp
and eax, 0xffff
push ecx
mov ecx, esi
mov edi, eax
call fcn.3f36f7d1
mov ecx, esi
push eax
push 0x16fc
push 0x16f8
call fcn.3f3840e6
jmp 0x3f317dc2
cmp word [esi + 0x7ae], bp
je 0x3f319bb4
push dword [esp + 0x1c]
mov ecx, esi
call fcn.3f36f8c5
movsx edi, word [esp + 0x30]
shl edi, 7
mov dword [esp + 0x1c], eax
mov eax, dword [esi + 0x242e4]
add eax, edi
cmp word [eax + 2], 0x1808
jne 0x3f31821c
movzx ecx, word [eax + 0x20]
mov edx, dword [esi + 0x242e8]
mov cx, word [edx + ecx*4]
mov word [eax + 0x24], cx
mov eax, dword [esi + 0x242e4]
movzx eax, word [edi + eax + 0x20]
mov ecx, dword [esi + 0x242e8]
movsx eax, word [ecx + eax*4 + 2]
push ebp
push eax
mov ecx, esi
call fcn.3f36f7d1
mov ecx, dword [esi + 0x242e4]
mov word [edi + ecx + 0x20], ax
mov eax, dword [esi + 0x242e4]
movsx eax, word [edi + eax + 0x24]
push eax
mov ecx, esi
call fcn.3f3840e6
mov ecx, esi
push eax
mov eax, dword [esi + 0x242e4]
movsx eax, word [edi + eax + 0x20]
push eax
call fcn.3f3840e6
mov ecx, esi
push eax
call fcn.3f36f82f
mov ebp, 0xff1
mov ecx, esi
push eax
push dword [esp + 0x34]
push ebp
call fcn.3f30c1b3
push 0x3f30d423
push dword [esp + 0x34]
mov ecx, esi
push ebp
mov dword [esp + 0x24], 1
call fcn.3f30bf29
mov ecx, esi
push eax
call fcn.3f3840e6
test ax, ax
je 0x3f317f47
movzx eax, word [esi + 0x24]
mov ecx, dword [esi + 0x242e8]
movsx eax, word [ecx + eax*4 + 2]
mov ecx, dword [esi + 0x242e4]
push 0x3f30d482
push dword [esp + 0x34]
shl eax, 7
mov ax, word [eax + ecx + 0xc]
push ebp
mov ecx, esi
mov word [esi + 0xbe], ax
call fcn.3f30bf29
mov ecx, esi
push eax
call fcn.3f3840e6
mov ecx, esi
push eax
call fcn.3f36f8a4
cmp ax, 1
je 0x3f318214
xor eax, eax
mov ax, word [esi + 0x24]
push 0x3f30d4b5
mov ecx, esi
push eax
call fcn.3f36d6bc
test ax, ax
je 0x3f31821c
jmp 0x3f318214
push 0x3f30d44b
push dword [esp + 0x34]
mov ecx, esi
push ebp
call fcn.3f30bf29
mov ecx, esi
push eax
call fcn.3f3840e6
test ax, ax
je 0x3f317ffe
movzx eax, word [esi + 0x24]
mov ecx, dword [esi + 0x242e8]
movsx eax, word [ecx + eax*4 + 2]
mov ecx, dword [esi + 0x242e4]
push 0x3f30d482
push dword [esp + 0x34]
shl eax, 7
mov ax, word [eax + ecx + 0xe]
push ebp
mov ecx, esi
mov word [esi + 0xbe], ax
call fcn.3f30bf29
mov ecx, esi
push eax
call fcn.3f3840e6
mov ecx, esi
push eax
call fcn.3f36f8a4
cmp ax, 1
je 0x3f318214
xor eax, eax
mov ax, word [esi + 0x24]
push 0x3f30d4b5
mov ecx, esi
push eax
call fcn.3f36d6bc
test ax, ax
jne 0x3f318214
push 0x3f30d4e0
push dword [esp + 0x34]
mov ecx, esi
push ebp
call fcn.3f30bf29
mov ecx, esi
push eax
call fcn.3f3840e6
mov ecx, esi
push eax
call fcn.3f36f8a4
cmp ax, 1
jmp 0x3f318212
push 0x3f30d513
push dword [esp + 0x34]
mov ecx, esi
push ebp
call fcn.3f30bf29
mov ecx, esi
push eax
call fcn.3f36d6bc
test ax, ax
je 0x3f3180b5
push 0x3f30d5d2
push dword [esp + 0x34]
mov ecx, esi
push ebp
call fcn.3f30bf29
mov ecx, esi
push eax
call fcn.3f3840e6
mov ecx, esi
push eax
call fcn.3f36f8a4
cmp ax, 1
jle 0x3f318067
movzx eax, word [esi + 0x24]
mov ecx, dword [esi + 0x242e8]
movsx eax, word [ecx + eax*4]
push 0x3f311b8e
push eax
mov ecx, esi
call fcn.3f36d6bc
test ax, ax
je 0x3f3180b5
push dword [esp + 0x30]
mov ecx, esi
push ebp
call fcn.3f30bf29
mov ecx, esi
push eax
call fcn.3f36f8a4
cmp ax, 2
jne 0x3f318214
push dword [esp + 0x30]
mov ecx, esi
push ebp
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 + 2], 0x139f
jne 0x3f318214
push dword [esp + 0x30]
mov ecx, esi
push ebp
call fcn.3f30bf29
mov ecx, esi
push eax
call fcn.3f36f8a4
cmp ax, 3
jne 0x3f31821c
push dword [esp + 0x30]
mov ecx, esi
push ebp
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 + 2], 0x139f
jne 0x3f31821c
push dword [esp + 0x30]
mov eax, dword [esi + 0x242e8]
push ebp
mov ecx, esi
mov dword [esp + 0x28], eax
call fcn.3f30bf29
movzx ecx, ax
mov eax, dword [esp + 0x20]
movzx ecx, word [eax + ecx*4]
movsx eax, word [eax + ecx*4 + 2]
mov ecx, dword [esi + 0x242e4]
shl eax, 7
cmp word [eax + ecx + 0x1a], 0x17a9
jne 0x3f31821c
push dword [esp + 0x30]
mov ecx, esi
push ebp
call fcn.3f30bf29
mov ecx, esi
push eax
call fcn.3f36d5c4
mov ecx, dword [esi + 0x242e4]
shl eax, 7
cmp word [eax + ecx + 2], 0x13aa
jne 0x3f31821c
push dword [esp + 0x30]
mov ecx, esi
push 0xff1
call fcn.3f30bf29
mov ecx, dword [esi + 0x242e8]
push dword [esp + 0x30]
movzx eax, ax
mov ax, word [ecx + eax*4]
mov ebp, ecx
push 0xff1
mov ecx, esi
mov word [esp + 0x28], ax
call fcn.3f30bf29
movzx edx, word [esp + 0x20]
movsx edx, word [ebp + edx*4 + 2]
movzx eax, ax
mov cx, word [ebp + eax*4]
mov eax, dword [esi + 0x242e4]
movzx ecx, cx
movsx ecx, word [ebp + ecx*4 + 2]
shl ecx, 7
movsx ecx, word [ecx + eax + 0xc]
shl edx, 7
movsx eax, word [edx + eax + 0xe]
sub eax, ecx
cmp eax, 1
jne 0x3f31821c
push dword [esp + 0x30]
mov ebp, dword [esi + 0x242e8]
push 0xff1
mov ecx, esi
call fcn.3f30bf29
movzx eax, ax
movzx eax, word [ebp + eax*4]
movsx eax, word [ebp + eax*4 + 2]
push eax
mov ecx, esi
call fcn.3f36e4d6
mov ecx, dword [esi + 0x242e4]
movsx eax, ax
shl eax, 7
cmp word [eax + ecx + 0x1a], 0x17a7
jne 0x3f31821c
mov dword [esp + 0x14], 1
mov eax, dword [esi + 0x242e4]
add eax, edi
cmp word [eax], 0x13b7
jne 0x3f31824c
movsx eax, word [eax + 2]
push 0xec2
push eax
mov ecx, esi
call fcn.3f36d68e
test ax, ax
jne 0x3f31824c
xor eax, eax
inc eax
mov dword [esp + 0x18], eax
mov dword [esp + 0x14], eax
movzx eax, word [esp + 0x1c]
xor ebp, ebp
jmp 0x3f318259
mov eax, dword [esp + 0x28]
cmp eax, ebp
je 0x3f3185f5
mov ecx, dword [esi + 0x242e8]
movzx eax, ax
mov eax, dword [ecx + eax*4]
mov ecx, eax
sar ecx, 0x10
push ecx
mov dword [esp + 0x24], ecx
and eax, 0xffff
push 0xfec
mov ecx, esi
mov dword [esp + 0x30], eax
call fcn.3f30bf29
movzx eax, ax
mov dword [esp + 0x10], eax
jmp 0x3f318297
xor ebp, ebp
cmp dword [esp + 0x10], ebp
je 0x3f3185e9
movzx eax, word [esp + 0x10]
mov ecx, dword [esi + 0x242e8]
mov eax, dword [ecx + eax*4]
mov ebp, eax
sar ebp, 0x10
push ebp
and eax, 0xffff
push 0x1029
mov ecx, esi
mov dword [esp + 0x18], eax
call fcn.3f30bf29
cmp ax, 0x17f9
jne 0x3f318295
xor ecx, ecx
cmp word [esi + 0x796], cx
jne 0x3f3182ed
cmp word [esi + 0x78e], cx
jne 0x3f3182ed
cmp word [esi + 0x78c], cx
je 0x3f3182f9
cmp word [esi + 0x58], cx
je 0x3f3184f6
xor ecx, ecx
mov eax, dword [esi + 0x242e4]
add eax, edi
cmp word [eax + 2], 0x1808
je 0x3f31831f
cmp word [esp + 0x18], cx
je 0x3f31843c
cmp word [eax], 0x13b7
jne 0x3f31843c
cmp word [esp + 0x14], 1
je 0x3f31843c
push dword [esp + 0x30]
mov ebx, 0xff1
push ebx
mov ecx, esi
call fcn.3f30bf29
mov ecx, esi
push eax
call fcn.3f36f8a4
cmp ax, 2
jne 0x3f318408
cmp word [esi + 0x58], 0
je 0x3f318367
mov eax, dword [esi + 0x242e4]
cmp word [edi + eax + 0xe], 0xa
jge 0x3f318408
push dword [esp + 0x30]
mov ecx, esi
push ebx
call fcn.3f30bf29
mov ecx, dword [esi + 0x242e8]
movzx eax, ax
movsx eax, word [ecx + eax*4 + 2]
push eax
push 0xd
mov ecx, esi
call fcn.3f370f8d
test ax, ax
jne 0x3f318408
push dword [esp + 0x30]
mov ecx, esi
push ebx
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 + 2], 0x139f
je 0x3f318408
push dword [esp + 0x30]
mov ecx, esi
push ebx
call fcn.3f30bf29
push dword [esp + 0x30]
mov ecx, esi
push ebx
mov dword [esp + 0x1c], eax
call fcn.3f30bf29
mov ecx, dword [esi + 0x242e8]
movzx ebx, word [esp + 0x14]
mov edx, dword [esi + 0x242e4]
movzx eax, ax
movsx eax, word [ecx + eax*4 + 2]
movsx ecx, word [ecx + ebx*4 + 2]
shl ecx, 7
mov cx, word [ecx + edx + 0xe]
shl eax, 7
cmp cx, word [eax + edx + 0xc]
jg 0x3f31843c
push 0x1184
push ebp
push 0x103e
mov ecx, esi
call fcn.3f30bf29
mov ecx, dword [esi + 0x242e4]
movsx eax, ax
shl eax, 7
movsx eax, word [eax + ecx + 0x1a]
push eax
mov ecx, esi
call fcn.3f36d68e
test ax, ax
je 0x3f3184f6
push ebp
push 0x103e
mov ecx, esi
call fcn.3f30bf29
push dword [esp + 0x30]
mov ecx, esi
mov bx, ax
call fcn.3f36e4ae
cmp bx, ax
jne 0x3f318499
push ebp
push 0x103e
mov ecx, esi
call fcn.3f30bf29
mov ecx, dword [esi + 0x242e4]
movsx eax, ax
shl eax, 7
movsx eax, word [eax + ecx + 0xe]
inc ax
mov ecx, esi
push eax
call fcn.3f3118e0
mov ecx, dword [esi + 0x242e4]
movsx eax, ax
shl eax, 7
cmp word [eax + ecx + 0x1a], 0x173a
je 0x3f3184f6
push ebp
push 0x103e
mov ecx, esi
call fcn.3f30bf29
push dword [esp + 0x30]
mov ecx, esi
mov bx, ax
call fcn.3f36e4d6
cmp bx, ax
jne 0x3f31852f
push ebp
push 0x103e
mov ecx, esi
call fcn.3f30bf29
mov ecx, dword [esi + 0x242e4]
movsx eax, ax
shl eax, 7
movsx eax, word [eax + ecx + 0xc]
dec ax
mov ecx, esi
push eax
call fcn.3f311898
mov ecx, dword [esi + 0x242e4]
movsx eax, ax
shl eax, 7
cmp word [eax + ecx + 0x1a], 0x173a
jne 0x3f31852f
push dword [esp + 0x20]
mov ebx, 0xfec
push ebx
mov ecx, esi
call fcn.3f30bf29
mov ecx, esi
push eax
push ebp
call fcn.3f3840e6
mov ecx, esi
push eax
push dword [esp + 0x24]
push ebx
call fcn.3f30c1b3
mov dword [esp + 0x14], 3
mov ebx, 0x3f1017b4
jmp 0x3f318295
mov ebp, dword [esp + 0x20]
mov ecx, dword [esi + 0x242e4]
movsx eax, bp
shl eax, 7
add eax, ecx
cmp word [eax + 0x1a], 0x1bb6
jne 0x3f3185d2
movsx eax, word [eax + 0x22]
test ax, ax
je 0x3f318558
mov ebp, eax
push ebp
mov ebx, 0xfec
push ebx
mov ecx, esi
call fcn.3f30bf29
push 0
push ebp
push ebx
mov ecx, esi
mov dword [esp + 0x2c], eax
call fcn.3f30c1b3
push 0x3f1017b4
push 0
push ebp
mov ecx, esi
call fcn.3f36f7d1
mov ecx, esi
push eax
mov eax, 0x16a5
push eax
push eax
call fcn.3f3840e6
push ebp
push ebx
mov ecx, esi
call fcn.3f30bf29
test ax, ax
mov ecx, esi
je 0x3f3185c7
push ebp
push ebx
call fcn.3f30bf29
mov ecx, dword [esi + 0x242e8]
movzx eax, ax
movsx eax, word [ecx + eax*4 + 2]
push 0x17f9
push eax
push 0x1029
mov ecx, esi
jmp 0x3f3185cd
push dword [esp + 0x20]
push ebp
push ebx
call fcn.3f30c1b3
mov dword [esp + 0x18], 1
mov dword [esp + 0x14], 2
mov ebx, 0x3f1017b4
xor ebp, ebp
cmp word [esp + 0x14], 2
jne 0x3f318255
cmp word [esi + 0x58], bp
jne 0x3f3186c5
cmp word [esp + 0x14], bp
jne 0x3f3186c5
mov eax, dword [esi + 0x242e4]
movsx eax, word [edi + eax + 0xe]
dec ax
mov ecx, esi
push eax
call fcn.3f311898
mov ecx, dword [esi + 0x242e4]
movsx edx, ax
shl edx, 7
mov dx, word [edx + ecx + 0x1a]
cmp dx, 0x1732
je 0x3f31863e
cmp dx, 0x1736
jne 0x3f318651
xor eax, eax
mov ax, word [edi + ecx + 0xe]
sub ax, 2
mov ecx, esi
push eax
call fcn.3f311898
cmp word [esp + 0x18], bp
jne 0x3f3186c5
mov ecx, dword [esi + 0x242e4]
movsx eax, ax
shl eax, 7
mov ax, word [eax + ecx + 0x1a]
cmp ax, 0x173b
je 0x3f3186bd
cmp ax, 0x173a
je 0x3f3186bd
xor eax, eax
mov ax, word [esi + 0x3c]
push 0x3f30d5f2
mov ecx, esi
push eax
call fcn.3f36d6f8
test ax, ax
je 0x3f3186c5
xor eax, eax
mov ax, word [esi + 0x3c]
push 0x3f30d623
mov ecx, esi
push eax
call fcn.3f36d6f8
test ax, ax
jne 0x3f3186c5
xor eax, eax
mov ax, word [esi + 0x3c]
push 0x3f30d6bb
mov ecx, esi
push eax
call fcn.3f36d6bc
test ax, ax
jne 0x3f3186c5
mov dword [esp + 0x14], 1
cmp word [esi + 0x78c], bp
jne 0x3f3186d7
cmp word [esi + 0x78e], bp
je 0x3f3186e1
cmp word [esi + 0x58], bp
je 0x3f319b47
movzx eax, word [esp + 0x1c]
mov dword [esp + 0x20], eax
xor ebp, ebp
cmp dword [esp + 0x20], ebp
je 0x3f3193e3
movzx eax, word [esp + 0x20]
mov ecx, dword [esi + 0x242e8]
mov eax, dword [ecx + eax*4]
mov ebp, eax
sar ebp, 0x10
and eax, 0xffff
movsx edi, bp
mov dword [esp + 0x20], eax
mov eax, dword [esi + 0x242e4]
shl edi, 7
mov word [esi + 0x34], bp
cmp word [edi + eax + 0x22], 0
je 0x3f318765
push 0x3f30d6f2
push ebp
push 0xfec
mov ecx, esi
mov word [esi + 0x34], bp
call fcn.3f30bf29
mov ecx, esi
push eax
call fcn.3f3840e6
test ax, ax
mov ecx, esi
je 0x3f318758
xor eax, eax
mov ax, word [esi + 0x24]
push eax
jmp 0x3f31875a
push 0
push ebp
push 0xfec
call fcn.3f30c1b3
cmp word [esp + 0x14], 2
jge 0x3f31939c
xor ecx, ecx
cmp word [esi + 0x58], cx
jne 0x3f318784
cmp word [esp + 0x14], cx
je 0x3f31939c
mov eax, dword [esi + 0x242e4]
add eax, edi
cmp word [eax + 0x22], cx
jne 0x3f3187ab
cmp word [eax + 0x20], cx
jne 0x3f3187ab
cmp word [eax + 0x24], cx
jne 0x3f3187ab
push ebp
mov ecx, esi
call fcn.3f30d2d9
jmp 0x3f3186ea
cmp word [esp + 0x18], 1
jne 0x3f318816
xor ecx, ecx
mov cx, word [eax + 2]
cmp cx, 0x1808
je 0x3f3187f9
cmp word [eax], 0x13b7
jne 0x3f3187d9
push 0xec2
push ecx
mov ecx, esi
call fcn.3f36d68e
test ax, ax
je 0x3f3187f9
cmp word [esp + 0x14], 1
je 0x3f318816
push ebx
push 0
push ebp
mov ecx, esi
call fcn.3f36f7d1
push eax
push 0x16f7
push 0x16f5
jmp 0x3f31880f
push ebx
push 0
push ebp
mov ecx, esi
call fcn.3f36f7d1
push eax
push 0x166a
push 0x1667
mov ecx, esi
call fcn.3f3840e6
mov eax, dword [esi + 0x242e4]
cmp word [edi + eax + 2], 0x1808
je 0x3f31939c
cmp word [esp + 0x18], 0
je 0x3f31883d
cmp word [esp + 0x14], 1
jne 0x3f31939c
cmp word [esp + 0x24], 0
jne 0x3f318a47
push ebp
push 0xfc7
mov ecx, esi
call fcn.3f30bf29
test ax, ax
jne 0x3f318a3f
mov eax, dword [esi + 0x242e4]
lea ecx, [eax + edi]
movsx edx, word [ecx + 0x30]
shl edx, 7
cmp word [edx + eax + 0x1a], 0x17d0
je 0x3f318a3f
xor eax, eax
mov ax, word [ecx + 0x1a]
push 0x118d
mov ecx, esi
push eax
call fcn.3f36d68e
test ax, ax
jne 0x3f318a3f
mov eax, dword [esi + 0x242e4]
cmp word [edi + eax + 0x28], 0
jne 0x3f318a3f
push ebp
push 0x11d3
mov ecx, esi
call fcn.3f30beb2
test ax, ax
jne 0x3f318a3f
push ebp
push 0x11d2
mov ecx, esi
call fcn.3f30beb2
test ax, ax
jne 0x3f318a3f
mov eax, dword [esi + 0x242e4]
add eax, edi
cmp word [eax + 0x1a], 0x17d0
je 0x3f318a3f
test byte [eax + 0x6e], 2
jne 0x3f318a3f
test byte [eax + 0x79], 0xc
je 0x3f318942
push dword [esp + 0x30]
mov ecx, esi
push 0xfd8
call fcn.3f30bf29
mov ecx, dword [esi + 0x242e4]
movsx eax, ax
shl eax, 7
cmp word [eax + ecx + 2], 0x13a0
jne 0x3f318942
push ebp
push 0xfd8
mov ecx, esi
call fcn.3f30bf29
mov ecx, esi
push eax
push 0xfe4
call fcn.3f30bf29
test ax, ax
jne 0x3f318a3f
mov eax, dword [esi + 0x242e4]
add eax, edi
test byte [eax + 0x6c], 2
jne 0x3f318a3f
test byte [eax + 0x6d], 4
je 0x3f318a0e
push ebp
push 0x11df
mov ecx, esi
call fcn.3f30beb2
test ax, ax
jne 0x3f3189a3
mov eax, dword [esi + 0x242e4]
test byte [edi + eax + 0x6b], 0x80
jne 0x3f3189a3
push ebp
push 0x11c0
mov ecx, esi
call fcn.3f30beb2
test ax, ax
jne 0x3f3189a3
mov eax, dword [esi + 0x242e4]
add eax, edi
test byte [eax + 0x6c], 2
je 0x3f318a0e
test byte [eax + 0x6d], 0x10
je 0x3f318a0e
mov eax, dword [esi + 0x242e4]
lea ecx, [eax + edi]
movsx edx, word [ecx + 0x22]
shl edx, 7
cmp word [edx + eax + 2], 0x13af
je 0x3f318a0e
cmp word [ecx + 0xc], 1
jle 0x3f318a0e
movzx eax, word [esi + 4]
mov ecx, dword [esi + 0x242e8]
movsx eax, word [ecx + eax*4 + 2]
push eax
mov ecx, esi
call fcn.3f36e4ae
cmp bp, ax
je 0x3f318a0e
mov eax, dword [esi + 0x242e4]
movsx eax, word [edi + eax + 0xc]
cmp ax, 3
jg 0x3f318a3f
dec eax
push eax
mov ecx, esi
call fcn.3f311898
mov ecx, dword [esi + 0x242e4]
movsx eax, ax
shl eax, 7
cmp word [eax + ecx + 2], 0x13aa
jne 0x3f318a3f
mov eax, dword [esi + 0x242e4]
lea ecx, [eax + edi]
movsx edx, word [ecx + 0x22]
shl edx, 7
cmp word [edx + eax + 2], 0x13b3
jne 0x3f318a47
xor eax, eax
mov ax, word [ecx + 0x1a]
push 0x819
mov ecx, esi
push eax
call fcn.3f36d68e
test ax, ax
je 0x3f318a47
mov dword [esp + 0x24], 1
push ebx
push 0
push ebp
mov ecx, esi
call fcn.3f36f7d1
mov ecx, esi
push eax
push 0x16f7
push 0x16f5
call fcn.3f3840e6
push ebx
push 0
push ebp
mov ecx, esi
call fcn.3f36f7d1
mov ecx, esi
push eax
push 0x1666
push 0x1657
call fcn.3f3840e6
mov eax, dword [esi + 0x242e4]
lea ecx, [eax + edi]
movsx edx, word [ecx + 0x22]
shl edx, 7
cmp word [edx + eax + 2], 0x13b4
jne 0x3f318b44
cmp word [esi + 0x78a], 0
je 0x3f318b27
test byte [ecx + 0x6f], 0x10
je 0x3f318b27
cmp word [ecx + 2], 0x1804
jne 0x3f318ad6
movzx eax, word [ecx + 0x3e]
mov ecx, dword [esi + 0x242e8]
movsx eax, word [ecx + eax*4]
push 0x3f30d729
push eax
mov ecx, esi
call fcn.3f3840e6
test ax, ax
jne 0x3f318b10
mov eax, dword [esi + 0x242e4]
movsx eax, word [edi + eax + 0x3e]
push 0x3f30d757
push eax
mov ecx, esi
call fcn.3f36d6f8
test ax, ax
je 0x3f318b27
mov eax, dword [esi + 0x242e4]
movsx eax, word [edi + eax + 0x3e]
push 0x3f30d7bf
push eax
mov ecx, esi
call fcn.3f3840e6
test ax, ax
je 0x3f318b27
movzx eax, word [esi + 0x24]
mov ecx, dword [esi + 0x242e8]
movsx eax, word [ecx + eax*4 + 2]
push eax
mov ecx, esi
call fcn.3f30e442
push ebx
push 0
push ebp
mov ecx, esi
call fcn.3f36f7d1
mov ecx, esi
push eax
push 0x1650
push 0x1649
call fcn.3f3840e6
mov eax, dword [esi + 0x242e4]
movsx eax, word [edi + eax + 2]
push 0x1192
push eax
mov ecx, esi
call fcn.3f36d68e
test ax, ax
jne 0x3f318b80
mov eax, dword [esi + 0x242e4]
add eax, edi
cmp word [eax + 2], 0x13a5
jne 0x3f318db8
cmp word [eax + 0x2e], 0
jne 0x3f318db8
cmp word [esi + 0x78a], 0
je 0x3f318d96
push ebp
mov ebx, 0xfdb
push ebx
mov ecx, esi
call fcn.3f30bf29
test ax, ax
je 0x3f318bec
push ebp
push ebx
mov ecx, esi
call fcn.3f30bf29
mov ecx, esi
push eax
push 0xfd3
call fcn.3f30bf29
mov ecx, dword [esi + 0x242e4]
movsx eax, ax
shl eax, 7
cmp word [eax + ecx + 0x1a], 0x1768
je 0x3f318bec
push ebp
push ebx
mov ecx, esi
call fcn.3f30bf29
mov ecx, dword [esi + 0x242e4]
movsx eax, ax
shl eax, 7
test byte [eax + ecx + 0x70], 0x40
je 0x3f318d8e
mov ecx, dword [esi + 0x242e4]
lea eax, [ecx + edi]
cmp word [eax + 0x1a], 0x176e
jne 0x3f318c11
movsx edx, word [eax + 0x22]
shl edx, 7
cmp word [edx + ecx + 2], 0x13ad
je 0x3f318d8e
cmp word [eax + 2], 0x13a5
jne 0x3f318c4b
cmp word [eax + 0x30], 0
jne 0x3f318c4b
movsx eax, word [eax + 0x64]
movsx edx, ax
shl edx, 7
cmp bp, word [edx + ecx + 0x38]
je 0x3f318d8e
push eax
push 0xfd8
mov ecx, esi
call fcn.3f30bf29
cmp bp, ax
je 0x3f318d8e
mov eax, dword [esi + 0x242e4]
lea ecx, [eax + edi]
movsx edx, word [ecx + 0x30]
shl edx, 7
cmp word [edx + eax + 0x1a], 0x17d6
je 0x3f318c7c
test byte [ecx + 0x6c], 8
je 0x3f318c97
push ebp
push 0x11bc
mov ecx, esi
call fcn.3f30beb2
test ax, ax
je 0x3f318c97
push 0x3f329224
push 0x3f30d827
push ebp
mov ecx, esi
call fcn.3f3840e6
test ax, ax
je 0x3f318d8e
mov ecx, dword [esi + 0x242e4]
lea eax, [ecx + edi]
cmp word [eax + 0x1a], 0x1782
jne 0x3f318cf0
test byte [eax + 0x6d], 0x10
jne 0x3f318cf0
cmp word [eax + 2], 0x13ad
jne 0x3f318cf0
movsx eax, word [eax + 0x64]
shl eax, 7
movsx eax, word [eax + ecx + 0x3e]
push eax
push ebp
mov ecx, esi
call fcn.3f36f9b3
test eax, eax
jne 0x3f318cf0
mov eax, dword [esi + 0x242e4]
movsx eax, word [edi + eax + 0x20]
push 0x3f30d84f
push eax
mov ecx, esi
call fcn.3f36d6f8
test ax, ax
je 0x3f318d8e
mov ecx, dword [esi + 0x242e4]
lea eax, [ecx + edi]
cmp word [eax + 0x1a], 0x17c1
jne 0x3f318d62
test byte [eax + 0x6d], 0x10
jne 0x3f318d62
cmp word [eax + 0x20], 0
jne 0x3f318d62
movsx eax, word [eax + 0x64]
shl eax, 7
movzx eax, word [eax + ecx + 0x3e]
mov ecx, dword [esi + 0x242e8]
movsx eax, word [ecx + eax*4]
push eax
push ebp
mov ecx, esi
call fcn.3f36f9b3
test eax, eax
je 0x3f318d8e
mov ecx, dword [esi + 0x242e4]
lea eax, [ecx + edi]
movsx edx, word [eax + 0x64]
shl edx, 7
add edx, ecx
test byte [edx + 0x6a], 1
jne 0x3f318d62
movzx edx, word [edx + 0x3e]
mov ebx, dword [esi + 0x242e8]
movsx edx, word [ebx + edx*4 + 2]
shl edx, 7
test byte [edx + ecx + 0x6a], 1
je 0x3f318d8e
movsx eax, word [eax + 0x1a]
push 0x1199
push eax
mov ecx, esi
call fcn.3f36d68e
test ax, ax
jne 0x3f318d8e
mov eax, dword [esi + 0x242e4]
add eax, edi
cmp word [eax + 0x1a], 0x17a7
jne 0x3f318d96
test byte [eax + 0x6d], 0x10
jne 0x3f318d96
push ebp
mov ecx, esi
call fcn.3f30e442
mov ebx, 0x3f1017b4
push ebx
push 0
push ebp
mov ecx, esi
call fcn.3f36f7d1
mov ecx, esi
push eax
push 0x1627
push 0x1616
call fcn.3f3840e6
mov ecx, dword [esi + 0x242e4]
lea eax, [ecx + edi]
movsx edx, word [eax + 0x22]
shl edx, 7
mov cx, word [edx + ecx + 2]
cmp cx, 0x13b3
jne 0x3f3192ce
cmp word [esi + 0x78a], 0
mov word [esi + 0x34], bp
je 0x3f3192ae
movsx eax, word [eax + 2]
push 0x119c
push eax
mov ecx, esi
call fcn.3f36d68e
test ax, ax
jne 0x3f3190a7
mov ebx, dword [esi + 0x242e4]
cmp word [ebx + edi + 0x2c], ax
jne 0x3f3190a7
cmp word [ebx + edi + 2], 0x190b
jne 0x3f318e3e
push ebp
push 0x1021
mov ecx, esi
call fcn.3f30bf29
movsx eax, ax
shl eax, 7
cmp word [eax + ebx + 2], 0x13a4
jne 0x3f3190a7
movsx eax, word [ebx + edi + 0x22]
push 0x3f30d888
shl eax, 7
movsx eax, word [eax + ebx + 0xc]
push 0xffffffffffffffff
push eax
push 0x13b3
mov ecx, esi
call fcn.3f3840e6
test ax, ax
jne 0x3f3190a7
mov eax, dword [esi + 0x242e4]
lea ecx, [eax + edi]
movsx edx, word [ecx + 0x22]
shl edx, 7
mov al, byte [edx + eax + 0x6c]
test al, 0x40
jne 0x3f3190a7
test al, 0x10
je 0x3f318e93
cmp word [ecx + 0x24], 0
je 0x3f3190a7
xor eax, eax
mov ax, word [ecx + 0x24]
push 0x3f30d8a6
mov ecx, esi
push eax
call fcn.3f36d6f8
test ax, ax
jne 0x3f3190a7
mov eax, dword [esi + 0x242e4]
test byte [edi + eax + 0x74], 0x20
jne 0x3f3190a7
push ebp
push 0xfd8
mov ecx, esi
call fcn.3f30bf29
mov ecx, dword [esi + 0x242e4]
movsx eax, ax
shl eax, 7
cmp word [eax + ecx + 2], 0x13a0
je 0x3f318f04
push ebp
push 0x1021
mov ecx, esi
call fcn.3f30bf29
mov ecx, dword [esi + 0x242e4]
movsx eax, ax
shl eax, 7
cmp word [eax + ecx + 2], 0x13a0
jne 0x3f318f2c
push ebp
push 0x101b
mov ecx, esi
call fcn.3f30bf29
test ax, ax
jne 0x3f318f2c
mov eax, dword [esi + 0x242e4]
mov al, byte [edi + eax + 0x78]
test al, 0x20
je 0x3f318f2c
test al, al
jns 0x3f3190a7
mov eax, dword [esi + 0x242e4]
test byte [edi + eax + 0x78], 0x20
jne 0x3f318f84
push ebp
push 0x2b
mov ecx, esi
call fcn.3f370f8d
test ax, ax
jne 0x3f318f84
mov eax, dword [esi + 0x242e4]
test byte [edi + eax + 0x78], 0x80
je 0x3f318f84
movzx eax, word [esi + 4]
mov ecx, dword [esi + 0x242e8]
movsx eax, word [ecx + eax*4 + 2]
movsx ecx, bp
cmp ecx, eax
jne 0x3f318f84
push eax
mov ecx, esi
call fcn.3f36e4d6
mov ecx, dword [esi + 0x242e4]
cmp word [edi + ecx + 0x22], ax
je 0x3f3190a7
push ebp
mov ecx, esi
call fcn.3f314f1f
test ax, ax
jne 0x3f3190a7
push 0
mov ecx, esi
call fcn.3f3840e6
mov edx, dword [esi + 0x242e4]
movsx ebx, word [edx + edi + 0x22]
shl ebx, 7
mov bx, word [ebx + edx + 0xc]
movsx ecx, ax
shl ecx, 7
mov word [ecx + edx + 0xc], bx
mov edx, dword [esi + 0x242e4]
movsx ebx, word [edx + edi + 0x22]
shl ebx, 7
mov bx, word [ebx + edx + 0xe]
mov word [ecx + edx + 0xe], bx
mov word [esi + 0x2a8f8], ax
mov word [esi + 0x34], ax
mov eax, dword [esi + 0x242e4]
lea ebx, [eax + edi]
movsx ecx, word [ebx + 0x22]
shl ecx, 7
movsx ecx, word [ecx + eax + 0x1e]
shl ecx, 7
cmp word [ecx + eax + 0x46], 0
je 0x3f31905e
movsx ecx, word [eax + edi + 0x1e]
shl ecx, 7
mov dword [esp + 0x10], eax
movsx eax, word [ecx + eax + 0x46]
push eax
push 0x101d
mov ecx, esi
call fcn.3f30bf29
movsx ecx, word [ebx + 0x1e]
mov edx, dword [esp + 0x10]
shl ecx, 7
movsx ecx, word [ecx + edx + 0x48]
push ecx
push 0x101d
mov ecx, esi
mov word [esp + 0x18], ax
call fcn.3f30bf29
mov cx, word [esp + 0x10]
cmp ax, cx
jg 0x3f31905e
mov eax, dword [esi + 0x242e4]
movsx ecx, word [eax + edi + 0x22]
shl ecx, 7
lea eax, [ecx + eax + 0x73]
or byte [eax], 0x20
mov eax, dword [esi + 0x242e4]
cmp word [eax + edi + 0x24], 0
jne 0x3f31909c
movsx ecx, word [eax + edi + 0x22]
shl ecx, 7
movsx eax, word [ecx + eax + 0xe]
inc ax
mov ecx, esi
push eax
call fcn.3f3118e0
mov ecx, dword [esi + 0x242e4]
movsx eax, ax
shl eax, 7
cmp word [eax + ecx + 0x1a], 0x173a
je 0x3f3192ae
xor eax, eax
mov ax, word [esi + 0x34]
jmp 0x3f3192a6
mov eax, dword [esi + 0x242e4]
add eax, edi
mov word [esi + 0x34], bp
test byte [eax + 0x73], 8
je 0x3f3190f0
movsx eax, word [eax + 2]
push 0x11a0
push eax
mov ecx, esi
call fcn.3f36d68e
test ax, ax
jne 0x3f3190f0
mov eax, dword [esi + 0x242e4]
movsx eax, word [edi + eax + 0x42]
push 0x3f311c1c
push eax
mov ecx, esi
call fcn.3f36d6f8
test ax, ax
jne 0x3f319260
mov eax, dword [esi + 0x242e4]
mov cl, byte [eax + edi + 0x6d]
test cl, 4
je 0x3f3191b0
test cl, 0x10
jne 0x3f3191b0
movsx ecx, word [eax + edi + 0x1e]
shl ecx, 7
movsx eax, word [ecx + eax + 0x46]
push eax
push 0x101d
mov ecx, esi
call fcn.3f30bf29
test ax, ax
je 0x3f3191b0
mov eax, dword [esi + 0x242e4]
mov ebx, eax
mov dword [esp + 0x10], eax
movsx eax, word [ebx + edi + 0x1e]
shl eax, 7
movsx eax, word [eax + ebx + 0x48]
push eax
push 0x101d
mov ecx, esi
call fcn.3f30bf29
mov ecx, esi
push eax
push 2
call fcn.3f3840e6
movsx ecx, word [ebx + edi + 0x1e]
shl ecx, 7
movsx ecx, word [ecx + ebx + 0x46]
push ecx
push 0x101d
mov ecx, esi
mov word [esp + 0x18], ax
call fcn.3f30bf29
mov cx, word [esp + 0x10]
cmp ax, cx
jle 0x3f3191b0
mov eax, dword [esi + 0x242e4]
movzx eax, word [edi + eax + 0x20]
push eax
mov ecx, esi
call fcn.3f36d5c4
mov ecx, dword [esi + 0x242e4]
shl eax, 7
cmp word [eax + ecx + 0x28], 0
jne 0x3f319260
mov ebx, dword [esi + 0x242e4]
cmp word [ebx + edi + 2], 0x1806
jne 0x3f3191dd
push ebp
push 0xff5
mov ecx, esi
call fcn.3f30bf29
movsx eax, ax
shl eax, 7
test byte [eax + ebx + 0x6f], 2
jne 0x3f319260
cmp word [ebx + edi + 2], 0x13a2
jne 0x3f319217
push ebp
push 0xfd3
mov ecx, esi
call fcn.3f30bf29
test ax, ax
jne 0x3f319217
push 0x3f30d924
push ebp
push 0xfdc
mov ecx, esi
call fcn.3f30bf29
mov ecx, esi
push eax
call fcn.3f36d6f8
test ax, ax
jne 0x3f319260
mov eax, dword [esi + 0x242e4]
add eax, edi
cmp word [eax + 2], 0x190b
jne 0x3f319263
cmp word [eax + 0x24], 0
jne 0x3f319263
movsx eax, word [eax + 0x20]
push 0x3f30dacf
push eax
mov ecx, esi
call fcn.3f36d6f8
test ax, ax
jne 0x3f319263
mov eax, dword [esi + 0x242e4]
movsx ecx, word [eax + edi + 0x22]
shl ecx, 7
add eax, ecx
test byte [eax + 0x70], 1
je 0x3f319263
test byte [eax + 0x6e], 0x20
jne 0x3f319263
push ebp
jmp 0x3f3192a7
mov eax, dword [esi + 0x242e4]
add eax, edi
xor ecx, ecx
mov cx, word [eax + 0x24]
movsx eax, word [eax + 0x38]
push ecx
push eax
mov ecx, esi
call fcn.3f36f9b3
test eax, eax
je 0x3f3192ae
mov eax, dword [esi + 0x242e4]
lea ecx, [eax + edi]
movsx edx, word [ecx + 0x22]
shl edx, 7
add eax, edx
test byte [eax + 0x70], 1
je 0x3f3192ae
test byte [eax + 0x6e], 0x20
jne 0x3f3192ae
xor eax, eax
mov ax, word [ecx + 0x38]
push eax
mov ecx, esi
call fcn.3f30e442
mov ebx, 0x3f1017b4
push ebx
push 0
push ebp
mov ecx, esi
call fcn.3f36f7d1
push eax
push 0x1648
push 0x162b
jmp 0x3f319395
cmp cx, 0x13a8
jne 0x3f31939c
cmp word [esi + 0x78a], 0
je 0x3f31937a
cmp word [eax + 0x28], 0
je 0x3f31937a
mov ecx, dword [esi + 0x242e4]
movzx eax, word [eax + 0x24]
movsx ebx, word [ecx + edi + 0x28]
mov dword [esp + 0x10], ecx
push eax
mov ecx, esi
call fcn.3f36d5c4
cmp ebx, eax
jne 0x3f31937a
mov eax, dword [esp + 0x10]
shl ebx, 7
movsx ecx, word [ebx + eax + 0x32]
shl ecx, 7
movsx eax, word [ecx + eax + 0xe]
inc ax
push 0x3f30d951
push 0xffffffffffffffff
mov ecx, esi
push eax
push 0xffffffffffffffff
call fcn.3f3840e6
test ax, ax
jne 0x3f31937a
movzx eax, word [esi + 4]
mov ecx, dword [esi + 0x242e8]
movsx eax, word [ecx + eax*4 + 2]
mov ecx, dword [esi + 0x242e4]
shl eax, 7
cmp word [eax + ecx + 2], 0x1805
je 0x3f31937a
push 0
push 0x3f30d991
push ebp
mov ecx, esi
call fcn.3f3840e6
test ax, ax
jne 0x3f31937a
push ebp
mov ecx, esi
call fcn.3f30e442
mov ebx, 0x3f1017b4
push ebx
push 0
push ebp
mov ecx, esi
call fcn.3f36f7d1
push eax
push 0x1656
push 0x1651
mov ecx, esi
call fcn.3f3840e6
mov eax, dword [esi + 0x242e4]
add edi, eax
test byte [edi + 0x71], 8
je 0x3f3186ea
cmp word [edi], 0x13b7
jne 0x3f3193c1
cmp word [esp + 0x18], 0
jne 0x3f3186ea
push ebx
push 0
push ebp
mov ecx, esi
call fcn.3f36f7d1
mov ecx, esi
push eax
push 0x162a
push 0x1628
call fcn.3f3840e6
jmp 0x3f3186ea
cmp word [esp + 0x24], 1
jne 0x3f319b47
mov ecx, dword [esi + 0x242e8]
movzx eax, word [esp + 0x1c]
movsx eax, word [ecx + eax*4 + 2]
push eax
mov ecx, esi
mov word [esi + 6], bp
call fcn.3f34c9cb
push dword [esp + 0x1c]
mov ecx, esi
call fcn.3f36f8c5
mov dword [esp + 0x1c], eax
movzx eax, ax
mov dword [esp + 0x24], eax
cmp dword [esp + 0x24], ebp
je 0x3f319703
movzx eax, word [esp + 0x24]
mov ecx, dword [esi + 0x242e8]
mov eax, dword [ecx + eax*4]
mov ebp, eax
sar ebp, 0x10
and eax, 0xffff
movsx edi, bp
mov dword [esp + 0x24], eax
mov eax, dword [esi + 0x242e4]
shl edi, 7
add eax, edi
mov cx, word [eax + 0x22]
test cx, cx
je 0x3f3196e4
mov word [esi + 0x34], cx
and word [eax + 0x20], 0
mov eax, dword [esi + 0x242e4]
and word [edi + eax + 0x24], 0
push 0x3f30d9b9
push ebp
push 0xff1
mov ecx, esi
call fcn.3f30bf29
mov ecx, esi
push eax
call fcn.3f3840e6
mov ecx, dword [esi + 0x242e4]
push 0x3f30da14
push ebp
mov word [edi + ecx + 0x20], ax
push 0xff1
mov ecx, esi
call fcn.3f30bf29
mov ecx, esi
push eax
call fcn.3f3840e6
mov ecx, dword [esi + 0x242e4]
mov word [edi + ecx + 0x24], ax
mov ecx, dword [esi + 0x242e4]
lea eax, [ecx + edi]
mov dx, word [eax + 0x20]
test dx, dx
je 0x3f3194e8
mov ebx, dword [esi + 0x242e8]
movzx edx, dx
movsx edx, word [ebx + edx*4 + 2]
mov ebx, 0x3f1017b4
jmp 0x3f3194ec
movsx edx, word [eax + 0x22]
shl edx, 7
mov cx, word [edx + ecx + 0xc]
mov word [eax + 0xc], cx
mov ecx, dword [esi + 0x242e4]
lea eax, [ecx + edi]
xor edx, edx
mov dx, word [eax + 0x24]
test dx, dx
je 0x3f31952f
mov eax, ecx
push edx
mov ecx, esi
mov dword [esp + 0x14], eax
call fcn.3f36d5c4
mov ecx, eax
mov eax, dword [esp + 0x10]
shl ecx, 7
mov cx, word [ecx + eax + 0xe]
mov word [eax + edi + 0xe], cx
jmp 0x3f31953f
movsx edx, word [eax + 0x22]
shl edx, 7
mov cx, word [edx + ecx + 0xe]
mov word [eax + 0xe], cx
push ebp
push 0x1033
mov ecx, esi
call fcn.3f30bf29
test ax, ax
je 0x3f319605
mov eax, dword [esi + 0x242e4]
push ebp
push 0x1033
mov ecx, esi
mov dword [esp + 0x18], eax
call fcn.3f30bf29
movsx ecx, ax
mov eax, dword [esp + 0x10]
shl ecx, 7
mov cx, word [ecx + eax + 0xc]
cmp cx, word [eax + edi + 0xc]
jge 0x3f3195ad
mov eax, dword [esi + 0x242e4]
push ebp
push 0x1033
mov ecx, esi
mov dword [esp + 0x18], eax
call fcn.3f30bf29
movsx ecx, ax
mov eax, dword [esp + 0x10]
shl ecx, 7
mov cx, word [ecx + eax + 0xc]
mov word [eax + edi + 0xc], cx
mov eax, dword [esi + 0x242e4]
push ebp
push 0x104b
mov ecx, esi
mov dword [esp + 0x18], eax
call fcn.3f30bf29
movsx ecx, ax
mov eax, dword [esp + 0x10]
shl ecx, 7
mov cx, word [ecx + eax + 0xe]
cmp cx, word [eax + edi + 0xe]
jle 0x3f319605
mov eax, dword [esi + 0x242e4]
push ebp
push 0x104b
mov ecx, esi
mov dword [esp + 0x18], eax
call fcn.3f30bf29
movsx ecx, ax
mov eax, dword [esp + 0x10]
shl ecx, 7
mov cx, word [ecx + eax + 0xe]
mov word [eax + edi + 0xe], cx
push ebp
push 0xfed
mov ecx, esi
call fcn.3f30bf29
test ax, ax
jne 0x3f319696
push ebp
jmp 0x3f319633
push dword [esp + 0x30]
mov ecx, esi
push 0xfed
call fcn.3f30bf29
test ax, ax
jne 0x3f319648
push dword [esp + 0x30]
mov ecx, esi
push 0x1024
call fcn.3f30bf29
test ax, ax
mov dword [esp + 0x30], eax
jne 0x3f31961a
push dword [esp + 0x30]
mov ecx, esi
push 0xfed
call fcn.3f30bf29
mov ecx, esi
push eax
push ebp
push 0xfed
call fcn.3f30c1b3
push ebp
push 0xfed
mov ecx, esi
call fcn.3f30bf29
test ax, ax
je 0x3f319696
push ebp
push 0xfed
mov ecx, esi
call fcn.3f30bf29
mov ecx, dword [esi + 0x242e4]
movsx eax, ax
shl eax, 7
mov word [eax + ecx + 0x66], bp
push ebp
push 0xff7
mov ecx, esi
call fcn.3f30bf29
mov ecx, dword [esi + 0x242e4]
push ebp
mov word [edi + ecx + 0x38], ax
push 0xff8
mov ecx, esi
call fcn.3f30bf29
mov ecx, esi
push eax
push ebp
push 0xfe2
call fcn.3f30c1b3
push ebp
push 0xfe8
mov ecx, esi
call fcn.3f30bf29
mov ecx, esi
push eax
push ebp
push 0xfd8
call fcn.3f30c1b3
push ebp
push 0x101a
mov ecx, esi
call fcn.3f30bf29
mov ecx, dword [esi + 0x242e4]
mov word [edi + ecx + 2], ax
xor ebp, ebp
jmp 0x3f319421
push dword [esp + 0x1c]
mov ecx, esi
call fcn.3f36f8c5
movzx eax, word [esi + 6]
mov dword [esp + 0x30], eax
xor ebp, ebp
cmp dword [esp + 0x30], ebp
je 0x3f319b47
movzx eax, word [esp + 0x30]
mov ecx, dword [esi + 0x242e8]
mov eax, dword [ecx + eax*4]
mov ebp, eax
sar ebp, 0x10
and eax, 0xffff
movsx edi, bp
mov dword [esp + 0x30], eax
mov eax, dword [esi + 0x242e4]
shl edi, 7
xor ecx, ecx
mov cx, word [eax + edi + 0x66]
movsx edx, cx
shl edx, 7
movsx edx, word [edx + eax + 0x22]
shl edx, 7
cmp word [edx + eax + 2], 0x13b3
je 0x3f3197b4
push ecx
push 0xfed
mov ecx, esi
call fcn.3f30bf29
mov ecx, esi
push eax
push 0x1003
call fcn.3f30bf29
test ax, ax
jne 0x3f319716
mov eax, dword [esi + 0x242e4]
movsx eax, word [edi + eax + 0x66]
push ebx
push 0
push eax
mov ecx, esi
call fcn.3f36f7d1
push eax
push 0x1672
push 0x166b
mov ecx, esi
call fcn.3f3840e6
jmp 0x3f319716
cmp word [esi + 0x78a], 0
mov word [esi + 0x34], cx
je 0x3f3199ad
movsx ecx, word [eax + edi + 0x66]
shl ecx, 7
add ecx, eax
cmp word [ecx + 2], 0x190b
jne 0x3f3199ad
movsx ecx, word [ecx + 0x64]
movsx edx, cx
shl edx, 7
movsx edx, word [edx + eax + 0x22]
shl edx, 7
cmp word [edx + eax + 2], 0x13af
jne 0x3f3199ad
push 0x3f30da6f
push ecx
push 0xfed
mov ecx, esi
call fcn.3f30bf29
mov ecx, esi
push eax
push 0xfe9
call fcn.3f30bf29
mov ecx, esi
push eax
call fcn.3f3840e6
mov ecx, esi
push eax
call fcn.3f36f8a4
cmp ax, 2
jge 0x3f3199ad
push 0x3f30dacf
push ebp
push 0xff6
mov ecx, esi
call fcn.3f30bf29
mov ecx, esi
push eax
call fcn.3f36d6f8
test ax, ax
jne 0x3f3199ad
mov eax, dword [esi + 0x242e4]
movsx ecx, word [eax + edi + 0x66]
shl ecx, 7
movsx eax, word [ecx + eax + 0x64]
push 0x3f30daed
push eax
push 0xfed
mov ecx, esi
call fcn.3f30bf29
mov ecx, esi
push eax
push 0x1052
call fcn.3f30bf29
mov ecx, esi
push eax
call fcn.3f36d6f8
test ax, ax
jne 0x3f3199ad
mov eax, dword [esi + 0x242e4]
push ebp
push 0xff7
mov ecx, esi
mov dword [esp + 0x18], eax
call fcn.3f30bf29
movsx ecx, ax
mov eax, dword [esp + 0x10]
shl ecx, 7
movsx ecx, word [ecx + eax + 0x66]
shl ecx, 7
test byte [ecx + eax + 0x6c], 4
jne 0x3f3199ad
mov eax, dword [esi + 0x242e4]
push ebp
push 0xff8
mov ecx, esi
mov dword [esp + 0x18], eax
call fcn.3f30bf29
movsx ecx, ax
mov eax, dword [esp + 0x10]
shl ecx, 7
movsx ecx, word [ecx + eax + 0x66]
shl ecx, 7
test byte [ecx + eax + 0x6c], 4
jne 0x3f3199ad
mov eax, dword [esi + 0x242e4]
push ebp
push 0xfe8
mov ecx, esi
mov dword [esp + 0x18], eax
call fcn.3f30bf29
movsx ecx, ax
mov eax, dword [esp + 0x10]
shl ecx, 7
movsx ecx, word [ecx + eax + 0x66]
shl ecx, 7
test byte [ecx + eax + 0x6c], 4
jne 0x3f3199ad
mov eax, dword [esi + 0x242e4]
push ebp
push 0x1006
mov ecx, esi
mov dword [esp + 0x18], eax
call fcn.3f30bf29
movsx ecx, ax
mov eax, dword [esp + 0x10]
shl ecx, 7
movsx ecx, word [ecx + eax + 0x66]
shl ecx, 7
test byte [ecx + eax + 0x6c], 4
jne 0x3f3199ad
xor eax, eax
mov ax, word [esi + 0x34]
mov ecx, esi
push eax
call fcn.3f3840e6
mov edx, dword [esi + 0x242e4]
movsx ecx, ax
shl ecx, 7
and word [ecx + edx + 0x24], 0
mov edx, dword [esi + 0x242e4]
add ecx, edx
movsx ebp, word [ecx + 0x22]
shl ebp, 7
mov dx, word [edx + ebp + 0xe]
mov word [ecx + 0xe], dx
push eax
mov ecx, esi
mov word [esi + 0x2a8f8], ax
mov word [esi + 0x34], ax
call fcn.3f30e442
mov eax, dword [esi + 0x242e4]
xor ecx, ecx
mov cx, word [eax + edi + 0x66]
movsx edx, cx
shl edx, 7
test byte [edx + eax + 0x6e], 2
je 0x3f319af3
push ebx
push 0
push ecx
mov ecx, esi
call fcn.3f36f7d1
mov ecx, esi
push eax
mov eax, 0x1679
push eax
push eax
call fcn.3f3840e6
mov eax, dword [esi + 0x242e4]
movsx eax, word [edi + eax + 0x66]
push eax
mov ebp, 0xfec
push ebp
mov ecx, esi
call fcn.3f30bf29
mov ecx, esi
push eax
call fcn.3f36d5c4
push eax
push 0x1029
mov ecx, esi
call fcn.3f30bf29
cmp ax, 0x18bd
jne 0x3f319a2f
cmp word [esi + 0x56], 0
jne 0x3f319af3
mov word [esi + 0x56], 1
jmp 0x3f319af3
cmp word [esi + 0x56], 0
jne 0x3f319af3
cmp word [esi + 0x7a6], 0
jne 0x3f319af3
mov eax, dword [esi + 0x242e4]
movsx eax, word [edi + eax + 0x66]
push eax
push ebp
mov ecx, esi
call fcn.3f30bf29
push 0
mov ecx, esi
mov dword [esp + 0x24], eax
mov ax, word [esi + 0x7a6]
mov word [esp + 0x2c], ax
mov eax, dword [esi + 0x242e4]
movsx eax, word [edi + eax + 0x66]
push eax
push ebp
call fcn.3f30c1b3
mov eax, dword [esi + 0x242e4]
mov word [esi + 0x7a6], 1
movsx eax, word [edi + eax + 0x66]
push ebx
push 0
push eax
mov ecx, esi
call fcn.3f36f7d1
mov ecx, esi
push eax
mov eax, 0x1679
push eax
push eax
call fcn.3f3840e6
mov eax, dword [esi + 0x242e4]
movsx eax, word [edi + eax + 0x66]
push eax
push ebp
mov ecx, esi
call fcn.3f30bf29
test ax, ax
je 0x3f319acf
mov word [esi + 0x56], 1
mov eax, dword [esi + 0x242e4]
push dword [esp + 0x20]
movsx eax, word [edi + eax + 0x66]
push eax
push ebp
mov ecx, esi
call fcn.3f30c1b3
mov ax, word [esp + 0x28]
mov word [esi + 0x7a6], ax
mov eax, dword [esi + 0x242e4]
movsx eax, word [edi + eax + 0x66]
push eax
push 0xfed
mov ecx, esi
call fcn.3f30bf29
mov ecx, esi
push eax
push 0x1003
call fcn.3f30bf29
test ax, ax
jne 0x3f319716
mov eax, dword [esi + 0x242e4]
movsx eax, word [edi + eax + 0x66]
push ebx
push 0
push eax
mov ecx, esi
call fcn.3f36f7d1
push eax
push 0x1678
push 0x1673
jmp 0x3f3197a8
cmp word [esi + 0x796], bp
jne 0x3f319bb4
movzx edi, word [esi + 0x3c]
cmp edi, ebp
je 0x3f319bb4
mov ecx, dword [esi + 0x242e8]
mov edx, dword [esi + 0x242e4]
movzx eax, di
mov eax, dword [ecx + eax*4]
mov ecx, eax
and eax, 0xffff
sar ecx, 0x10
mov edi, eax
movsx eax, cx
shl eax, 7
add eax, edx
cmp word [eax + 0x22], bp
jne 0x3f319b54
cmp word [eax + 0x20], bp
jne 0x3f319b54
cmp word [eax + 0x24], bp
jne 0x3f319b54
test byte [eax + 0x75], 8
jne 0x3f319b54
push ebx
push ebp
push ecx
mov ecx, esi
call fcn.3f36f7d1
mov ecx, esi
push eax
push 0x1682
push 0x167a
call fcn.3f3840e6
jmp 0x3f319b54
pop ebp
pop ebx
pop edi
pop esi
add esp, 0x1c
ret 4