Function at 0x3f100
Capabilities:
Compress data via zlib inflate or deflate
Resolve function by parsing pe exports

Disassembly:
push rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x48
xor r13d, r13d
mov r12, rcx
cmp qword [rcx + 0x10], r13
je 0x3f1e1
cmp qword [rcx], r13
jne 0x3f130
cmp dword [rcx + 8], r13d
jne 0x3f1e1
mov rdi, qword [rcx + 0x28]
cmp dword [rdi + 8], 0x3f3f
jne 0x3f144
mov dword [rdi + 8], 0x3f40
mov r8d, dword [rcx + 0x18]
mov r9, qword [rcx + 0x10]
mov r14d, dword [rcx + 8]
mov r15, qword [rcx]
mov ebp, dword [rdi + 0x48]
mov esi, dword [rdi + 0x4c]
mov ebx, r8d
mov qword [rsp + 0x38], r9
mov dword [rsp + 0x98], r8d
mov dword [rsp + 0x30], r14d
mov dword [rsp + 0x90], r13d
mov dword [rsp + 0xa8], ebx
mov r11d, 0x10
lea r10d, [r11 - 9]
lea rdx, [0x000a0508]
mov ecx, dword [rdi + 8]
cmp ecx, 0x3f47
jg 0x3fa7b
je 0x3f9cf
cmp ecx, 0x3f41
jg 0x3f4e0
je 0x3f415
sub ecx, 0x3f34
je 0x3f32f
sub ecx, 9
je 0x3f213
sub ecx, 1
je 0x3f250
sub ecx, 1
je 0x3f271
cmp ecx, 1
je 0x3f271
mov eax, 0xfffffffe
add rsp, 0x48
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret
cmp r14d, r13d
je 0x40086
movzx eax, byte [r15]
mov ecx, esi
dec r14d
shl eax, cl
inc r15
add ebp, eax
add esi, 8
cmp esi, 0x20
jb 0x3f1f7
mov ecx, ebp
mov eax, ebp
mov esi, r13d
shl eax, 0x10
and ecx, 0xff00
add ecx, eax
mov eax, ebp
shr ebp, 0x18
shr eax, 8
shl ecx, 8
and eax, 0xff00
add eax, ecx
add eax, ebp
mov ebp, r13d
mov dword [rdi + 0x20], eax
mov dword [r12 + 0x4c], eax
mov dword [rdi + 8], 0x3f3e
cmp dword [rdi + 0x14], r13d
je 0x40029
mov dword [rdi + 0x20], 1
mov dword [r12 + 0x4c], 1
mov dword [rdi + 8], 0x3f3f
cmp dword [rdi + 0xc], r13d
je 0x3f2a8
mov ecx, esi
mov dword [rdi + 8], 0x3f4e
and ecx, r10d
shr ebp, cl
sub esi, ecx
jmp 0x3f18e
cmp r14d, r13d
je 0x40086
movzx eax, byte [r15]
mov ecx, esi
dec r14d
shl eax, cl
inc r15
add ebp, eax
add esi, 8
cmp esi, 3
jb 0x3f28c
mov eax, ebp
shr ebp, 1
dec esi
and eax, 1
mov dword [rdi + 0xc], eax
mov eax, ebp
and eax, 3
cmp eax, r13d
je 0x3f31d
sub eax, 1
je 0x3f2f0
sub eax, 1
je 0x3f2e7
cmp eax, 1
jne 0x3f324
lea rax, [0x000976e0]
mov qword [r12 + 0x20], rax
mov dword [rdi + 8], 0x3f51
jmp 0x3f324
mov dword [rdi + 8], 0x3f44
jmp 0x3f324
lea rax, [0x000a0ac0]
mov dword [rdi + 0x70], 9
mov dword [rdi + 0x74], 5
mov qword [rdi + 0x60], rax
lea rax, [0x000a12c0]
mov dword [rdi + 8], 0x3f47
mov qword [rdi + 0x68], rax
jmp 0x3f324
mov dword [rdi + 8], 0x3f41
shr ebp, 2
add esi, 0xfffffffe
jmp 0x3f18e
cmp dword [rdi + 0x10], r13d
jne 0x3f35d
mov dword [rdi + 8], 0x3f40
jmp 0x3f18e
cmp r14d, r13d
je 0x40086
movzx eax, byte [r15]
mov ecx, esi
dec r14d
shl eax, cl
inc r15
add ebp, eax
add esi, 8
cmp esi, r11d
jb 0x3f341
movzx ecx, bpl
mov eax, ebp
shr eax, 8
shl ecx, 8
add ecx, eax
mov eax, 0x8421085
mul ecx
mov eax, ecx
sub eax, edx
shr eax, 1
add eax, edx
shr eax, 4
imul eax, eax, 0x1f
cmp ecx, eax
je 0x3f3a1
lea rax, [0x00097860]
mov qword [r12 + 0x20], rax
mov dword [rdi + 8], 0x3f51
jmp 0x3f187
mov eax, ebp
and al, 0xf
cmp al, 8
je 0x3f3b2
lea rax, [0x00097880]
jmp 0x3f390
shr ebp, 4
add esi, 0xfffffffc
mov ecx, ebp
and ecx, 0xf
add ecx, 8
cmp dword [rdi + 0x30], r13d
jne 0x3f3c9
mov dword [rdi + 0x30], ecx
cmp ecx, 0xf
ja 0x3f409
cmp ecx, dword [rdi + 0x30]
ja 0x3f409
shr ebp, 8
mov eax, 1
mov dword [rdi + 0x20], 1
not ebp
shl eax, cl
mov esi, r13d
and ebp, 2
mov dword [rdi + 0x1c], eax
mov dword [r12 + 0x4c], 1
or ebp, 0x3f3d
mov dword [rdi + 8], ebp
mov ebp, r13d
jmp 0x3f187
lea rax, [0x000978a0]
jmp 0x3f390
mov ecx, esi
and ecx, r10d
shr ebp, cl
sub esi, ecx
jmp 0x3f43c
cmp r14d, r13d
je 0x40086
movzx eax, byte [r15]
mov ecx, esi
dec r14d
shl eax, cl
inc r15
add ebp, eax
add esi, 8
cmp esi, 0x20
jb 0x3f420
mov eax, ebp
movzx ecx, bp
not eax
shr eax, 0x10
cmp ecx, eax
je 0x3f45b
lea rax, [0x00097700]
jmp 0x40018
mov dword [rdi + 0x50], ecx
mov ebp, r13d
mov esi, r13d
mov dword [rdi + 8], 0x3f42
mov dword [rdi + 8], 0x3f43
mov r13d, dword [rdi + 0x50]
test r13d, r13d
je 0x3fa6c
cmp r13d, r14d
cmova r13d, r14d
cmp r13d, r8d
cmova r13d, r8d
test r13d, r13d
je 0x40086
mov r8d, r13d
mov rdx, r15
mov rcx, r9
mov ebx, r13d
call fcn.00091720
mov r8d, dword [rsp + 0x98]
mov r9, qword [rsp + 0x38]
sub r8d, r13d
sub r14d, r13d
add r9, rbx
add r15, rbx
sub dword [rdi + 0x50], r13d
mov dword [rsp + 0x98], r8d
mov qword [rsp + 0x38], r9
mov ebx, dword [rsp + 0xa8]
xor r13d, r13d
jmp 0x3f17d
sub ecx, 0x3f42
je 0x3f46b
sub ecx, 1
je 0x3f472
sub ecx, 1
je 0x3f525
sub ecx, 1
je 0x3f5ce
cmp ecx, 1
jne 0x3f1e1
jmp 0x3f897
cmp r14d, r13d
je 0x40086
movzx eax, byte [r15]
mov ecx, esi
dec r14d
shl eax, cl
inc r15
add ebp, eax
add esi, 8
cmp esi, 0xe
jb 0x3f509
mov ecx, ebp
shr ebp, 5
add esi, 0xfffffff2
mov edx, ebp
shr ebp, 5
and ecx, 0x1f
mov eax, ebp
and edx, 0x1f
add ecx, 0x101
and eax, 0xf
inc edx
shr ebp, 4
add eax, 4
mov dword [rdi + 0x7c], ecx
mov dword [rdi + 0x80], edx
mov dword [rdi + 0x78], eax
cmp ecx, 0x11e
ja 0x3fa60
cmp edx, 0x1e
ja 0x3fa60
mov dword [rdi + 0x84], r13d
mov dword [rdi + 8], 0x3f45
lea rdx, [0x000a0508]
jmp 0x3f5ce
cmp r14d, r13d
je 0x40086
movzx eax, byte [r15]
mov ecx, esi
dec r14d
shl eax, cl
inc r15
add ebp, eax
add esi, 8
cmp esi, 3
jb 0x3f588
mov eax, dword [rdi + 0x84]
movzx ecx, bp
shr ebp, 3
movzx eax, word [rdx + rax*2]
and cx, r10w
mov word [rdi + rax*2 + 0x90], cx
inc dword [rdi + 0x84]
add esi, 0xfffffffd
mov eax, dword [rdi + 0x78]
cmp dword [rdi + 0x84], eax
jb 0x3f5a4
jmp 0x3f5f4
mov eax, dword [rdi + 0x84]
movzx ecx, word [rdx + rax*2]
mov word [rdi + rcx*2 + 0x90], r13w
inc dword [rdi + 0x84]
cmp dword [rdi + 0x84], 0x13
jb 0x3f5db
lea rcx, [rdi + 0x70]
lea rax, [rdi + 0x550]
lea r9, [rdi + 0x88]
mov qword [r9], rax
mov qword [rdi + 0x60], rax
lea rax, [rdi + 0x310]
mov qword [rsp + 0x28], rax
mov dword [rcx], r10d
mov qword [rsp + 0x20], rcx
xor ecx, ecx
lea rdx, [rdi + 0x90]
lea r8d, [rcx + 0x13]
call fcn.000401a0
mov dword [rsp + 0x90], eax
cmp eax, r13d
je 0x3f66d
lea rax, [0x00097750]
mov qword [r12 + 0x20], rax
mov dword [rdi + 8], 0x3f51
mov r8d, dword [rsp + 0x98]
mov r9, qword [rsp + 0x38]
jmp 0x3f17d
mov r10d, 7
mov dword [rdi + 0x84], r13d
mov dword [rdi + 8], 0x3f46
lea r11d, [r10 + 9]
jmp 0x3f897
cmp r14d, r13d
je 0x40086
movzx eax, byte [r15]
mov ecx, esi
dec r14d
shl eax, cl
inc r15
add ebp, eax
add esi, 8
mov ecx, dword [rdi + 0x70]
mov eax, 1
shl eax, cl
lea ecx, [rax - 1]
mov eax, ebp
and rcx, rax
mov rax, qword [rdi + 0x60]
mov eax, dword [rax + rcx*4]
mov ecx, eax
mov dword [rsp + 0xa0], eax
shr ecx, 8
movzx ecx, cl
cmp ecx, esi
ja 0x3f68a
mov edx, eax
shr edx, 0x10
cmp dx, r11w
jae 0x3f700
shr eax, 8
movzx ecx, al
mov eax, dword [rdi + 0x84]
mov word [rdi + rax*2 + 0x90], dx
shr ebp, cl
sub esi, ecx
inc dword [rdi + 0x84]
jmp 0x3f897
jne 0x3f776
shr eax, 8
movzx ecx, al
add ecx, 2
cmp esi, ecx
jae 0x3f73a
cmp r14d, r13d
je 0x40086
movzx eax, byte [r15]
mov ecx, esi
add esi, 8
shl eax, cl
dec r14d
inc r15
add ebp, eax
movzx eax, byte [rsp + 0xa1]
add eax, 2
cmp esi, eax
jb 0x3f70f
movzx ecx, byte [rsp + 0xa1]
mov eax, dword [rdi + 0x84]
shr ebp, cl
sub esi, ecx
cmp eax, r13d
je 0x3f8ad
mov r8d, ebp
dec eax
shr ebp, 2
movzx r9d, word [rdi + rax*2 + 0x90]
and r8d, 3
add r8d, 3
add esi, 0xfffffffe
jmp 0x3f80d
cmp word [rsp + 0xa2], 0x11
movzx edx, byte [rsp + 0xa1]
jne 0x3f7c8
lea r8d, [rdx + 3]
jmp 0x3f7ab
cmp r14d, r13d
je 0x40086
movzx eax, byte [r15]
mov ecx, esi
dec r14d
shl eax, cl
inc r15
add ebp, eax
add esi, 8
cmp esi, r8d
jb 0x3f78f
mov ecx, edx
mov eax, 0xfffffffd
shr ebp, cl
mov r8d, ebp
and r8d, r10d
add r8d, 3
shr ebp, 3
jmp 0x3f806
lea r8d, [rdx + 7]
jmp 0x3f7ea
cmp r14d, r13d
je 0x40086
movzx eax, byte [r15]
mov ecx, esi
dec r14d
shl eax, cl
inc r15
add ebp, eax
add esi, 8
cmp esi, r8d
jb 0x3f7ce
mov ecx, edx
mov eax, 0xfffffff9
shr ebp, cl
mov r8d, ebp
and r8d, 0x7f
add r8d, 0xb
shr ebp, 7
sub eax, edx
mov r9d, r13d
add esi, eax
mov edx, dword [rdi + 0x80]
mov eax, dword [rdi + 0x84]
add edx, dword [rdi + 0x7c]
lea ecx, [r8 + rax]
cmp ecx, edx
jbe 0x3f892
lea rax, [0x00097770]
mov qword [r12 + 0x20], rax
mov dword [rdi + 8], 0x3f51
cmp dword [rdi + 8], 0x3f51
mov r8d, dword [rsp + 0x98]
mov r9, qword [rsp + 0x38]
lea rdx, [0x000a0508]
je 0x3f18e
cmp word [rdi + 0x290], r13w
jne 0x3f8d2
lea rax, [0x00097790]
mov qword [r12 + 0x20], rax
mov dword [rdi + 8], 0x3f51
jmp 0x3f187
mov eax, dword [rdi + 0x84]
dec r8d
mov word [rdi + rax*2 + 0x90], r9w
inc dword [rdi + 0x84]
cmp r8d, r13d
jne 0x3f87a
mov eax, dword [rdi + 0x80]
add eax, dword [rdi + 0x7c]
cmp dword [rdi + 0x84], eax
jae 0x3f837
jmp 0x3f6a6
mov r8d, dword [rsp + 0x98]
mov r9, qword [rsp + 0x38]
lea rax, [0x00097770]
mov qword [r12 + 0x20], rax
mov dword [rdi + 8], 0x3f51
jmp 0x3f187
mov r8d, dword [rdi + 0x7c]
lea rax, [rdi + 0x550]
lea r13, [rdi + 0x310]
mov qword [rdi + 0x88], rax
mov qword [rdi + 0x60], rax
lea rax, [rdi + 0x70]
lea rdx, [rdi + 0x90]
lea r9, [rdi + 0x88]
mov ecx, 1
mov qword [rsp + 0x28], r13
mov dword [rax], 9
mov qword [rsp + 0x20], rax
call fcn.000401a0
mov dword [rsp + 0x90], eax
test eax, eax
je 0x3f94b
mov r8d, dword [rsp + 0x98]
mov r9, qword [rsp + 0x38]
lea rax, [0x000977c0]
mov qword [r12 + 0x20], rax
mov dword [rdi + 8], 0x3f51
jmp 0x3f4d1
mov rax, qword [rdi + 0x88]
mov r8d, dword [rdi + 0x80]
lea rcx, [rdi + 0x74]
mov qword [rdi + 0x68], rax
mov eax, dword [rdi + 0x7c]
mov dword [rcx], 6
mov qword [rsp + 0x28], r13
mov qword [rsp + 0x20], rcx
lea r9, [rdi + 0x88]
lea rdx, [rdi + rax*2 + 0x90]
mov ecx, 2
call fcn.000401a0
mov ebx, dword [rsp + 0xa8]
mov r8d, dword [rsp + 0x98]
mov r9, qword [rsp + 0x38]
xor r13d, r13d
mov dword [rsp + 0x90], eax
cmp eax, r13d
je 0x3f9c8
lea rax, [0x000977e0]
mov qword [r12 + 0x20], rax
mov dword [rdi + 8], 0x3f51
jmp 0x3f17d
mov dword [rdi + 8], 0x3f47
mov dword [rdi + 8], 0x3f48
cmp r14d, 6
jb 0x3fac2
cmp r8d, 0x102
jb 0x3fac2
mov qword [r12 + 0x10], r9
mov dword [r12 + 0x18], r8d
mov qword [r12], r15
mov dword [r12 + 8], r14d
mov edx, ebx
mov rcx, r12
mov dword [rdi + 0x48], ebp
mov dword [rdi + 0x4c], esi
call fcn.0003eac0
cmp dword [rdi + 8], 0x3f3f
mov r9, qword [r12 + 0x10]
mov r8d, dword [r12 + 0x18]
mov r15, qword [r12]
mov r14d, dword [r12 + 8]
mov ebp, dword [rdi + 0x48]
mov esi, dword [rdi + 0x4c]
mov r10d, 7
mov qword [rsp + 0x38], r9
mov dword [rsp + 0x98], r8d
lea rdx, [0x000a0508]
lea r11d, [r10 + 9]
jne 0x3f18e
or dword [rdi + 0x1be4], 0xffffffff
jmp 0x3f187
lea rax, [0x00097720]
jmp 0x3f390
mov dword [rdi + 8], 0x3f3f
xor r13d, r13d
jmp 0x3f18e
cmp ecx, 0x3f4d
jg 0x3ff51
je 0x3ff23
sub ecx, 0x3f48
je 0x3f9d6
sub ecx, 1
je 0x3fc5a
sub ecx, 1
je 0x3fcb1
sub ecx, 1
je 0x3fe28
cmp ecx, 1
jne 0x3f1e1
jmp 0x3fe7d
mov ecx, dword [rdi + 0x70]
mov r11, qword [rdi + 0x60]
mov eax, 1
shl eax, cl
mov dword [rdi + 0x1be4], r13d
lea ecx, [rax - 1]
mov eax, ebp
and rcx, rax
mov eax, dword [r11 + rcx*4]
jmp 0x3fb1a
cmp r14d, r13d
je 0x40086
movzx eax, byte [r15]
mov ecx, esi
dec r14d
shl eax, cl
mov ecx, dword [rdi + 0x70]
inc r15
add ebp, eax
mov eax, 1
add esi, 8
shl eax, cl
lea ecx, [rax - 1]
mov eax, ebp
and rcx, rax
mov rax, qword [rdi + 0x60]
mov eax, dword [rax + rcx*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
cmp ecx, esi
ja 0x3fae5
cmp al, r13b
je 0x3fbf8
test al, 0xf0
jne 0x3fbf8
mov r10d, eax
movzx ecx, al
mov r9d, 1
shr r10d, 8
mov edx, eax
mov dword [rsp + 0xa0], eax
movzx r8d, r10b
shr eax, 0x10
add ecx, r8d
shl r9d, cl
mov ecx, r8d
dec r9d
and r9d, ebp
shr r9d, cl
add r9d, eax
mov eax, dword [r11 + r9*4]
mov ecx, eax
shr ecx, 8
movzx r8d, cl
movzx ecx, r10b
add r8d, ecx
jmp 0x3fbe1
cmp r14d, r13d
je 0x40086
movzx eax, byte [r15]
movzx r9d, byte [rsp + 0xa1]
mov ecx, esi
shl eax, cl
mov r8d, 1
movzx ecx, dl
add ecx, r9d
add ebp, eax
movzx eax, word [rsp + 0xa2]
shl r8d, cl
mov ecx, r9d
dec r14d
dec r8d
inc r15
add esi, 8
and r8d, ebp
shr r8d, cl
add r8d, eax
mov rax, qword [rdi + 0x60]
mov eax, dword [rax + r8*4]
mov ecx, eax
shr ecx, 8
movzx r8d, cl
add r8d, r9d
cmp r8d, esi
ja 0x3fb82
movzx ecx, byte [rsp + 0xa1]
shr ebp, cl
sub esi, ecx
mov dword [rdi + 0x1be4], ecx
mov ecx, eax
shr ecx, 8
movzx ecx, cl
add dword [rdi + 0x1be4], ecx
shr ebp, cl
sub esi, ecx
mov ecx, eax
shr ecx, 0x10
mov dword [rdi + 0x50], ecx
cmp al, r13b
jne 0x3fc23
mov dword [rdi + 8], 0x3f4d
jmp 0x3f65b
test al, 0x20
je 0x3fc3a
or dword [rdi + 0x1be4], 0xffffffff
mov dword [rdi + 8], 0x3f3f
jmp 0x3f65b
test al, 0x40
je 0x3fc4a
lea rax, [0x00097800]
jmp 0x3f64f
movzx ecx, al
mov dword [rdi + 8], 0x3f49
and ecx, 0xf
mov dword [rdi + 0x58], ecx
mov edx, dword [rdi + 0x58]
cmp edx, r13d
je 0x3fca1
cmp esi, edx
jae 0x3fc87
cmp r14d, r13d
je 0x40086
movzx eax, byte [r15]
mov ecx, esi
add esi, 8
shl eax, cl
dec r14d
inc r15
add ebp, eax
cmp esi, dword [rdi + 0x58]
jb 0x3fc66
mov ecx, edx
mov eax, 1
sub esi, edx
shl eax, cl
dec eax
and eax, ebp
shr ebp, cl
add dword [rdi + 0x50], eax
add dword [rdi + 0x1be4], edx
mov eax, dword [rdi + 0x50]
mov dword [rdi + 8], 0x3f4a
mov dword [rdi + 0x1be8], eax
mov ecx, dword [rdi + 0x74]
mov r11, qword [rdi + 0x68]
mov eax, 1
shl eax, cl
lea ecx, [rax - 1]
mov eax, ebp
and rcx, rax
mov eax, dword [r11 + rcx*4]
jmp 0x3fd02
cmp r14d, r13d
je 0x40086
movzx eax, byte [r15]
mov ecx, esi
dec r14d
shl eax, cl
mov ecx, dword [rdi + 0x74]
inc r15
add ebp, eax
mov eax, 1
add esi, 8
shl eax, cl
lea ecx, [rax - 1]
mov eax, ebp
and rcx, rax
mov rax, qword [rdi + 0x68]
mov eax, dword [rax + rcx*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
cmp ecx, esi
ja 0x3fccd
test al, 0xf0
jne 0x3fdd7
mov r10d, eax
movzx ecx, al
mov r9d, 1
shr r10d, 8
mov edx, eax
mov dword [rsp + 0xa0], eax
movzx r8d, r10b
shr eax, 0x10
add ecx, r8d
shl r9d, cl
mov ecx, r8d
dec r9d
and r9d, ebp
shr r9d, cl
add r9d, eax
mov eax, dword [r11 + r9*4]
mov ecx, eax
shr ecx, 8
movzx r8d, cl
movzx ecx, r10b
add r8d, ecx
jmp 0x3fdc0
cmp r14d, r13d
je 0x40086
movzx eax, byte [r15]
movzx r9d, byte [rsp + 0xa1]
mov ecx, esi
shl eax, cl
mov r8d, 1
movzx ecx, dl
add ecx, r9d
add ebp, eax
movzx eax, word [rsp + 0xa2]
shl r8d, cl
mov ecx, r9d
dec r14d
dec r8d
inc r15
add esi, 8
and r8d, ebp
shr r8d, cl
add r8d, eax
mov rax, qword [rdi + 0x68]
mov eax, dword [rax + r8*4]
mov ecx, eax
shr ecx, 8
movzx r8d, cl
add r8d, r9d
cmp r8d, esi
ja 0x3fd61
movzx ecx, byte [rsp + 0xa1]
shr ebp, cl
sub esi, ecx
add dword [rdi + 0x1be4], ecx
mov ecx, eax
shr ecx, 8
movzx ecx, cl
add dword [rdi + 0x1be4], ecx
shr ebp, cl
sub esi, ecx
test al, 0x40
je 0x3fdf9
lea rax, [0x00097820]
jmp 0x3f64f
mov r8d, dword [rsp + 0x98]
mov r9, qword [rsp + 0x38]
mov ecx, eax
shr ecx, 0x10
mov r10d, 7
mov dword [rdi + 8], 0x3f4b
mov dword [rdi + 0x54], ecx
movzx ecx, al
lea r11d, [r10 + 9]
and ecx, 0xf
mov dword [rdi + 0x58], ecx
mov edx, dword [rdi + 0x58]
cmp edx, r13d
je 0x3fe6f
cmp esi, edx
jae 0x3fe55
cmp r14d, r13d
je 0x40086
movzx eax, byte [r15]
mov ecx, esi
add esi, 8
shl eax, cl
dec r14d
inc r15
add ebp, eax
cmp esi, dword [rdi + 0x58]
jb 0x3fe34
mov ecx, edx
mov eax, 1
sub esi, edx
shl eax, cl
dec eax
and eax, ebp
shr ebp, cl
add dword [rdi + 0x54], eax
add dword [rdi + 0x1be4], edx
mov dword [rdi + 8], 0x3f4c
lea rdx, [0x000a0508]
cmp r8d, r13d
je 0x40086
mov ecx, dword [rdi + 0x54]
mov eax, ebx
sub eax, r8d
cmp ecx, eax
jbe 0x3fecf
sub ecx, eax
cmp ecx, dword [rdi + 0x38]
jbe 0x3feae
cmp dword [rdi + 0x1be0], r13d
je 0x3feae
lea rax, [0x00097840]
jmp 0x40018
mov eax, dword [rdi + 0x3c]
cmp ecx, eax
jbe 0x3febe
mov edx, dword [rdi + 0x34]
sub ecx, eax
sub edx, ecx
jmp 0x3fec2
sub eax, ecx
mov edx, eax
mov eax, dword [rdi + 0x50]
add rdx, qword [rdi + 0x40]
cmp ecx, eax
jbe 0x3feda
jmp 0x3fed8
mov eax, dword [rdi + 0x50]
mov rdx, r9
sub rdx, rcx
mov ecx, eax
cmp ecx, r8d
cmova ecx, r8d
sub r8d, ecx
sub eax, ecx
mov dword [rdi + 0x50], eax
mov dword [rsp + 0x98], r8d
mov al, byte [rdx]
inc rdx
mov byte [r9], al
inc r9
add ecx, 0xffffffff
jne 0x3fef1
mov qword [rsp + 0x38], r9
lea rdx, [0x000a0508]
cmp dword [rdi + 0x50], r13d
jne 0x3f18e
mov dword [rdi + 8], 0x3f48
jmp 0x3f187
cmp r8d, r13d
je 0x40086
mov al, byte [rdi + 0x50]
mov byte [r9], al
inc r9
dec r8d
mov dword [rsp + 0x98], r8d
mov qword [rsp + 0x38], r9
mov dword [rdi + 8], 0x3f48
jmp 0x3f18e
sub ecx, 0x3f4e
jne 0x40061
cmp dword [rdi + 0x10], r13d
je 0x40052
jmp 0x3ff85
cmp r14d, r13d
je 0x40086
movzx eax, byte [r15]
mov ecx, esi
dec r14d
shl eax, cl
inc r15
add ebp, eax
add esi, 8
cmp esi, 0x20
jb 0x3ff69
sub ebx, r8d
add dword [r12 + 0x1c], ebx
add dword [rdi + 0x24], ebx
test byte [rdi + 0x10], 4
je 0x3ffd7
cmp ebx, r13d
je 0x3ffd7
mov ecx, dword [rdi + 0x20]
mov r8d, ebx
mov rdx, r9
sub rdx, r8
call fcn.0003cef8
mov r8d, dword [rsp + 0x98]
mov r9, qword [rsp + 0x38]
mov r10d, 7
mov dword [rdi + 0x20], eax
lea rdx, [0x000a0508]
mov dword [r12 + 0x4c], eax
lea r11d, [r10 + 9]
test byte [rdi + 0x10], 4
mov ebx, r8d
mov dword [rsp + 0xa8], ebx
je 0x4004c
mov ecx, ebp
mov eax, ebp
shl eax, 0x10
and ecx, 0xff00
add ecx, eax
mov eax, ebp
shr eax, 8
shl ecx, 8
and eax, 0xff00
add ecx, eax
mov eax, ebp
shr eax, 0x18
add ecx, eax
cmp ecx, dword [rdi + 0x20]
je 0x4004c
lea rax, [0x000978c0]
mov qword [r12 + 0x20], rax
mov dword [rdi + 8], 0x3f51
jmp 0x3f18e
mov qword [r12 + 0x10], r9
mov dword [r12 + 0x18], r8d
mov qword [r12], r15
mov dword [r12 + 8], r14d
mov eax, 2
mov dword [rdi + 0x48], ebp
mov dword [rdi + 0x4c], esi
jmp 0x3f1e6
mov ebp, r13d
mov esi, r13d
mov dword [rdi + 8], 0x3f50
mov r13d, 1
jmp 0x4008e
sub ecx, 2
je 0x40059
sub ecx, 1
je 0x4007e
cmp ecx, 1
jne 0x3f1e1
mov eax, 0xfffffffc
jmp 0x3f1e6
mov r13d, 0xfffffffd
jmp 0x4008e
mov r13d, dword [rsp + 0x90]
mov rax, qword [rsp + 0x38]
mov qword [r12], r15
mov dword [r12 + 8], r14d
mov qword [r12 + 0x10], rax
mov eax, dword [rsp + 0x98]
mov dword [r12 + 0x18], eax
cmp dword [rdi + 0x34], 0
mov dword [rdi + 0x48], ebp
mov dword [rdi + 0x4c], esi
jne 0x400c9
cmp ebx, dword [r12 + 0x18]
je 0x400eb
cmp dword [rdi + 8], 0x3f51
jge 0x400eb
mov rdx, qword [r12 + 0x10]
mov r8d, ebx
mov rcx, r12
sub r8d, dword [r12 + 0x18]
call fcn.0003f008
test eax, eax
je 0x400eb
mov dword [rdi + 8], 0x3f52
jmp 0x40074
sub ebx, dword [r12 + 0x18]
mov r9d, dword [rsp + 0x30]
sub r9d, dword [r12 + 8]
add dword [r12 + 0x1c], ebx
add dword [r12 + 0xc], r9d
add dword [rdi + 0x24], ebx
test byte [rdi + 0x10], 4
mov dword [rsp + 0x30], r9d
je 0x40136
test ebx, ebx
je 0x40136
mov rdx, qword [r12 + 0x10]
mov ecx, dword [rdi + 0x20]
mov r8d, ebx
sub rdx, r8
call fcn.0003cef8
mov r9d, dword [rsp + 0x30]
mov dword [rdi + 0x20], eax
mov dword [r12 + 0x4c], eax
cmp dword [rdi + 8], 0x3f47
je 0x4014d
cmp dword [rdi + 8], 0x3f42
je 0x4014d
xor r8d, r8d
jmp 0x40153
mov r8d, 0x100
mov eax, dword [rdi + 0xc]
neg eax
mov eax, 0x80
sbb ecx, ecx
xor edx, edx
and ecx, 0x40
cmp dword [rdi + 8], 0x3f3f
cmove edx, eax
lea eax, [r8 + rcx]
add edx, eax
add edx, dword [rdi + 0x4c]
mov dword [r12 + 0x48], edx
test r9d, r9d
jne 0x4018f
test ebx, ebx
jne 0x4018f
lea eax, [rbx - 5]
test r13d, r13d
cmove r13d, eax
mov eax, r13d
jmp 0x3f1e6