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

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x28
mov ebx, edx
mov rdi, rcx
mov eax, 0xfffffffe
test rdi, rdi
je 0x24fbe3
cmp qword [rdi + 0x30], 0
je 0x24fbe3
cmp qword [rdi + 0x38], 0
je 0x24fbe3
mov rsi, qword [rdi + 0x28]
test rsi, rsi
je 0x24fbe3
cmp qword [rsi], rdi
jne 0x24fbe3
mov ecx, dword [rsi + 8]
lea edx, [rcx - 0x39]
cmp edx, 0x38
ja 0x24f1e4
movabs rbp, 0x100400400011001
bt rbp, rdx
jae 0x24f1e4
cmp ebx, 5
ja 0x24fbe3
cmp qword [rdi + 0x10], 0
je 0x24f1d4
mov ebp, dword [rdi + 8]
test ebp, ebp
je 0x24f1c7
cmp qword [rdi], 0
je 0x24f1d4
cmp ebx, 4
je 0x24f1f6
cmp ecx, 0x29a
jne 0x24f1f6
mov rcx, qword [str.stream_error]
mov qword [rdi + 0x20], rcx
jmp 0x24fbe3
cmp ecx, 0x29a
je 0x24f1aa
cmp ecx, 0x2a
je 0x24f1aa
jmp 0x24fbe3
cmp dword [rdi + 0x18], 0
je 0x24f5f3
mov edx, dword [rsi + 0x40]
mov dword [rsi + 0x40], ebx
cmp dword [rsi + 0x28], 0
je 0x24f3d9
mov rcx, rsi
call fcn.00256ba0
mov eax, dword [rsi + 0x28]
mov ecx, dword [rdi + 0x18]
cmp eax, ecx
mov ebp, eax
cmova ebp, ecx
test ebp, ebp
je 0x24f263
mov rcx, qword [rdi + 0x10]
mov rdx, qword [rsi + 0x20]
mov r14d, ebp
mov r8, r14
call sub.msvcrt.dll_memcpy
add qword [rdi + 0x10], r14
add qword [rsi + 0x20], r14
add dword [rdi + 0x1c], ebp
mov ecx, dword [rdi + 0x18]
sub ecx, ebp
mov dword [rdi + 0x18], ecx
mov eax, dword [rsi + 0x28]
sub eax, ebp
mov dword [rsi + 0x28], eax
jne 0x24f263
mov rax, qword [rsi + 0x10]
mov qword [rsi + 0x20], rax
xor eax, eax
test ecx, ecx
je 0x24fbda
mov ecx, dword [rsi + 8]
cmp ecx, 0x2a
jne 0x24f3ec
mov ecx, dword [rsi + 0x48]
shl ecx, 0xc
add ecx, 0xffff8800
xor edx, edx
cmp dword [rsi + 0xb0], 1
jg 0x24f2b0
mov ebp, dword [rsi + 0xac]
cmp ebp, 2
jl 0x24f2b0
mov edx, 0x40
cmp ebp, 6
jl 0x24f2b0
mov ebp, 0x80
mov edx, 0xc0
cmove edx, ebp
or edx, ecx
mov ecx, edx
or ecx, 0x20
cmp dword [rsi + 0x94], 0
cmove ecx, edx
imul rdx, rcx, 0x8421085
shr rdx, 0x20
mov ebp, ecx
sub ebp, edx
shr ebp, 1
add ebp, edx
shr ebp, 4
mov edx, ebp
shl edx, 5
sub edx, ebp
mov ebp, ecx
sub ebp, edx
or ebp, ecx
mov r8, qword [rsi + 0x10]
lea edx, [rax + 1]
mov dword [rsi + 0x28], edx
mov eax, eax
mov rdx, r8
mov byte [rdx + rax], ch
xor bpl, 0x1f
mov rax, qword [rsi + 0x10]
mov ecx, dword [rsi + 0x28]
lea edx, [rcx + 1]
mov dword [rsi + 0x28], edx
mov byte [rax + rcx], bpl
cmp dword [rsi + 0x94], 0
je 0x24f363
mov eax, dword [rdi + 0x4c]
mov ecx, eax
shr ecx, 0x10
shr eax, 0x18
mov r8, qword [rsi + 0x10]
mov ebp, dword [rsi + 0x28]
lea edx, [rbp + 1]
mov dword [rsi + 0x28], edx
mov byte [r8 + rbp], al
mov rax, qword [rsi + 0x10]
mov edx, dword [rsi + 0x28]
lea ebp, [rdx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rax + rdx], cl
mov eax, dword [rdi + 0x4c]
mov rcx, qword [rsi + 0x10]
mov edx, dword [rsi + 0x28]
lea ebp, [rdx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rcx + rdx], ah
mov rcx, qword [rsi + 0x10]
mov edx, dword [rsi + 0x28]
lea ebp, [rdx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rcx + rdx], al
xor ecx, ecx
xor edx, edx
xor r8d, r8d
call fcn.00258fc0
mov dword [rdi + 0x4c], eax
mov dword [rsi + 8], 0x71
mov r14, qword [rdi + 0x28]
mov rcx, r14
call fcn.00256ba0
mov ebp, dword [r14 + 0x28]
mov eax, dword [rdi + 0x18]
cmp ebp, eax
cmova ebp, eax
test ebp, ebp
je 0x24f3ca
mov rcx, qword [rdi + 0x10]
mov rdx, qword [r14 + 0x20]
mov r15d, ebp
mov r8, r15
call sub.msvcrt.dll_memcpy
add qword [rdi + 0x10], r15
add qword [r14 + 0x20], r15
add dword [rdi + 0x1c], ebp
sub dword [rdi + 0x18], ebp
mov eax, dword [r14 + 0x28]
sub eax, ebp
mov dword [r14 + 0x28], eax
jne 0x24f3ca
mov rax, qword [r14 + 0x10]
mov qword [r14 + 0x20], rax
cmp dword [rsi + 0x28], 0
jne 0x24fbda
mov ecx, dword [rsi + 8]
jmp 0x24f403
xor eax, eax
test ebp, ebp
je 0x24f5b5
cmp ecx, 0x2a
je 0x24f277
cmp ecx, 0x29a
jne 0x24f403
cmp dword [rdi + 8], 0
jne 0x24f5f3
jmp 0x24fbfa
cmp ecx, 0x39
jne 0x24f706
xor ecx, ecx
xor edx, edx
xor r8d, r8d
call fcn.00259490
mov dword [rdi + 0x4c], eax
mov rax, qword [rsi + 0x10]
mov ecx, dword [rsi + 0x28]
lea edx, [rcx + 1]
mov dword [rsi + 0x28], edx
mov byte [rax + rcx], 0x1f
mov rax, qword [rsi + 0x10]
mov ecx, dword [rsi + 0x28]
lea edx, [rcx + 1]
mov dword [rsi + 0x28], edx
mov byte [rax + rcx], 0x8b
mov rax, qword [rsi + 0x10]
mov ecx, dword [rsi + 0x28]
lea edx, [rcx + 1]
mov dword [rsi + 0x28], edx
mov byte [rax + rcx], 8
mov rax, qword [rsi + 0x30]
test rax, rax
je 0x24f608
cmp dword [rax], 0
setne cl
cmp dword [rax + 0x3c], 0
setne dl
add dl, dl
or dl, cl
cmp qword [rax + 0x10], 0
setne r8b
shl r8b, 2
cmp qword [rax + 0x20], 0
setne cl
shl cl, 3
or cl, r8b
or cl, dl
cmp qword [rax + 0x30], 0
setne al
shl al, 4
or al, cl
mov rcx, qword [rsi + 0x10]
mov edx, dword [rsi + 0x28]
lea ebp, [rdx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rcx + rdx], al
mov rax, qword [rsi + 0x30]
mov al, byte [rax + 4]
mov rcx, qword [rsi + 0x10]
mov edx, dword [rsi + 0x28]
lea ebp, [rdx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rcx + rdx], al
mov rax, qword [rsi + 0x30]
mov al, byte [rax + 5]
mov rcx, qword [rsi + 0x10]
mov edx, dword [rsi + 0x28]
lea ebp, [rdx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rcx + rdx], al
mov rax, qword [rsi + 0x30]
mov al, byte [rax + 6]
mov rcx, qword [rsi + 0x10]
mov edx, dword [rsi + 0x28]
lea ebp, [rdx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rcx + rdx], al
mov rax, qword [rsi + 0x30]
mov al, byte [rax + 7]
mov rcx, qword [rsi + 0x10]
mov edx, dword [rsi + 0x28]
lea ebp, [rdx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rcx + rdx], al
mov ecx, dword [rsi + 0xac]
mov al, 2
cmp ecx, 9
je 0x24f525
cmp dword [rsi + 0xb0], 1
setg dl
cmp ecx, 2
mov al, 4
jl 0x24f525
shl dl, 2
mov eax, edx
mov rcx, qword [rsi + 0x10]
mov edx, dword [rsi + 0x28]
lea ebp, [rdx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rcx + rdx], al
mov rax, qword [rsi + 0x30]
mov al, byte [rax + 0xc]
mov rcx, qword [rsi + 0x10]
mov edx, dword [rsi + 0x28]
lea ebp, [rdx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rcx + rdx], al
mov rax, qword [rsi + 0x30]
cmp qword [rax + 0x10], 0
je 0x24f585
mov al, byte [rax + 0x18]
mov rcx, qword [rsi + 0x10]
mov edx, dword [rsi + 0x28]
lea ebp, [rdx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rcx + rdx], al
mov rax, qword [rsi + 0x30]
mov al, byte [rax + 0x19]
mov rcx, qword [rsi + 0x10]
mov edx, dword [rsi + 0x28]
lea ebp, [rdx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rcx + rdx], al
mov rax, qword [rsi + 0x30]
cmp dword [rax + 0x3c], 0
je 0x24f59e
mov ecx, dword [rdi + 0x4c]
mov rdx, qword [rsi + 0x10]
mov r8d, dword [rsi + 0x28]
call fcn.00259490
mov dword [rdi + 0x4c], eax
lea r12, [rsi + 0x30]
mov dword [rsi + 0x38], 0
mov dword [rsi + 8], 0x45
jmp 0x24f726
xor ebp, ebp
cmp ebx, 4
setg r10b
xor r9d, r9d
cmp edx, 4
setg r8b
cmp ebx, 4
je 0x24f3e3
lea r11d, [rbx + rbx]
mov bpl, r10b
lea ebp, [rbp + rbp*8]
sub r11d, ebp
add edx, edx
mov r9b, r8b
lea ebp, [r9 + r9*8]
sub edx, ebp
cmp r11d, edx
jg 0x24f3e3
mov rax, qword [str.buffer_error]
mov qword [rdi + 0x20], rax
mov eax, 0xfffffffb
jmp 0x24fbe3
mov rax, qword [rsi + 0x10]
mov ecx, dword [rsi + 0x28]
lea edx, [rcx + 1]
mov dword [rsi + 0x28], edx
mov byte [rax + rcx], 0
mov rax, qword [rsi + 0x10]
mov ecx, dword [rsi + 0x28]
lea edx, [rcx + 1]
mov dword [rsi + 0x28], edx
mov byte [rax + rcx], 0
mov rax, qword [rsi + 0x10]
mov ecx, dword [rsi + 0x28]
lea edx, [rcx + 1]
mov dword [rsi + 0x28], edx
mov byte [rax + rcx], 0
mov rax, qword [rsi + 0x10]
mov ecx, dword [rsi + 0x28]
lea edx, [rcx + 1]
mov dword [rsi + 0x28], edx
mov byte [rax + rcx], 0
mov rax, qword [rsi + 0x10]
mov ecx, dword [rsi + 0x28]
lea edx, [rcx + 1]
mov dword [rsi + 0x28], edx
mov byte [rax + rcx], 0
mov ecx, dword [rsi + 0xac]
mov al, 2
cmp ecx, 9
je 0x24f680
cmp dword [rsi + 0xb0], 1
setg dl
cmp ecx, 2
mov al, 4
jl 0x24f680
shl dl, 2
mov eax, edx
mov rcx, qword [rsi + 0x10]
mov edx, dword [rsi + 0x28]
lea ebp, [rdx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rcx + rdx], al
mov rax, qword [rsi + 0x10]
mov ecx, dword [rsi + 0x28]
lea edx, [rcx + 1]
mov dword [rsi + 0x28], edx
mov byte [rax + rcx], 0xa
mov dword [rsi + 8], 0x71
mov r14, qword [rdi + 0x28]
mov rcx, r14
call fcn.00256ba0
mov ebp, dword [r14 + 0x28]
mov eax, dword [rdi + 0x18]
cmp ebp, eax
cmova ebp, eax
test ebp, ebp
je 0x24f6f9
mov rcx, qword [rdi + 0x10]
mov rdx, qword [r14 + 0x20]
mov r15d, ebp
mov r8, r15
call sub.msvcrt.dll_memcpy
add qword [rdi + 0x10], r15
add qword [r14 + 0x20], r15
add dword [rdi + 0x1c], ebp
sub dword [rdi + 0x18], ebp
mov eax, dword [r14 + 0x28]
sub eax, ebp
mov dword [r14 + 0x28], eax
jne 0x24f6f9
mov rax, qword [r14 + 0x10]
mov qword [r14 + 0x20], rax
cmp dword [rsi + 0x28], 0
jne 0x24fbda
mov ecx, dword [rsi + 8]
add ecx, 0xffffffbb
cmp ecx, 0x22
ja case.0x24f720.70
lea rax, [0x002504b4]
movsxd rcx, dword [rax + rcx*4]
add rcx, rax
jmp rcx
lea r12, [rsi + 0x30]
mov rcx, qword [r12]
mov rax, qword [rcx + 0x10]
test rax, rax
je 0x24f873
mov qword [rsp + 0x20], r12
mov r15d, dword [rsi + 0x18]
mov ebp, dword [rsi + 0x28]
movzx r14d, word [rcx + 0x18]
mov edx, dword [rsi + 0x38]
sub r14d, edx
lea ecx, [rbp + r14]
cmp ecx, r15d
jbe 0x24f823
sub r15d, ebp
mov r12d, ebp
mov rcx, qword [rsi + 0x10]
add rcx, r12
mov edx, edx
add rdx, rax
mov r8, r15
call sub.msvcrt.dll_memcpy
mov r8d, dword [rsi + 0x18]
mov dword [rsi + 0x28], r8d
sub r8d, ebp
jbe 0x24f7a0
mov rax, qword [rsi + 0x30]
mov eax, dword [rax + 0x3c]
test eax, eax
je 0x24f7a0
mov ecx, dword [rdi + 0x4c]
add r12, qword [rsi + 0x10]
mov rdx, r12
call fcn.00259490
mov dword [rdi + 0x4c], eax
add dword [rsi + 0x38], r15d
mov r12, qword [rdi + 0x28]
mov rcx, r12
call fcn.00256ba0
mov ebp, dword [r12 + 0x28]
mov eax, dword [rdi + 0x18]
cmp ebp, eax
cmova ebp, eax
test ebp, ebp
je 0x24f7fc
mov rcx, qword [rdi + 0x10]
mov rdx, qword [r12 + 0x20]
mov r13d, ebp
mov r8, r13
call sub.msvcrt.dll_memcpy
add qword [rdi + 0x10], r13
add qword [r12 + 0x20], r13
add dword [rdi + 0x1c], ebp
sub dword [rdi + 0x18], ebp
mov eax, dword [r12 + 0x28]
sub eax, ebp
mov dword [r12 + 0x28], eax
jne 0x24f7fc
mov rax, qword [r12 + 0x10]
mov qword [r12 + 0x20], rax
cmp dword [rsi + 0x28], 0
jne 0x24fbda
sub r14d, r15d
mov r15d, dword [rsi + 0x18]
xor ebp, ebp
cmp r14d, r15d
mov rax, qword [rsi + 0x30]
mov rax, qword [rax + 0x10]
mov edx, dword [rsi + 0x38]
ja 0x24f75c
mov r15d, ebp
mov rcx, qword [rsi + 0x10]
add rcx, r15
mov edx, edx
add rdx, rax
mov r8d, r14d
call sub.msvcrt.dll_memcpy
add r14d, dword [rsi + 0x28]
mov dword [rsi + 0x28], r14d
sub r14d, ebp
jbe 0x24f867
mov rax, qword [rsi + 0x30]
mov eax, dword [rax + 0x3c]
test eax, eax
je 0x24f867
mov ecx, dword [rdi + 0x4c]
add r15, qword [rsi + 0x10]
mov rdx, r15
mov r8d, r14d
call fcn.00259490
mov dword [rdi + 0x4c], eax
mov dword [rsi + 0x38], 0
mov r12, qword [rsp + 0x20]
mov dword [rsi + 8], 0x49
mov rax, qword [r12]
cmp qword [rax + 0x20], 0
jne 0x24f89d
jmp 0x24f999
lea r12, [rsi + 0x30]
mov rax, qword [r12]
cmp qword [rax + 0x20], 0
je 0x24f999
mov r8d, dword [rsi + 0x28]
mov r9d, r8d
cmp r8d, dword [rsi + 0x18]
jne 0x24f943
sub r8d, r9d
jbe 0x24f8d0
mov rcx, qword [r12]
mov ecx, dword [rcx + 0x3c]
test ecx, ecx
je 0x24f8d0
mov ecx, dword [rdi + 0x4c]
mov edx, r9d
add rdx, qword [rsi + 0x10]
call fcn.00259490
mov dword [rdi + 0x4c], eax
mov r14, qword [rdi + 0x28]
mov rcx, r14
call fcn.00256ba0
mov ebp, dword [r14 + 0x28]
mov eax, dword [rdi + 0x18]
cmp ebp, eax
cmova ebp, eax
test ebp, ebp
je 0x24f921
mov rcx, qword [rdi + 0x10]
mov rdx, qword [r14 + 0x20]
mov r15d, ebp
mov r8, r15
call sub.msvcrt.dll_memcpy
add qword [rdi + 0x10], r15
add qword [r14 + 0x20], r15
add dword [rdi + 0x1c], ebp
sub dword [rdi + 0x18], ebp
mov eax, dword [r14 + 0x28]
sub eax, ebp
mov dword [r14 + 0x28], eax
jne 0x24f921
mov rax, qword [r14 + 0x10]
mov qword [r14 + 0x20], rax
xor r8d, r8d
cmp dword [rsi + 0x28], 0
mov r9d, 0
je 0x24f943
jmp 0x24fbda
mov r8d, dword [rsi + 0x28]
cmp r8d, dword [rsi + 0x18]
je 0x24f8ae
mov rcx, qword [rsi + 0x10]
mov rdx, qword [rsi + 0x30]
mov rdx, qword [rdx + 0x20]
mov ebp, dword [rsi + 0x38]
lea eax, [rbp + 1]
mov dword [rsi + 0x38], eax
movzx eax, byte [rdx + rbp]
lea edx, [r8 + 1]
mov dword [rsi + 0x28], edx
mov edx, r8d
mov byte [rcx + rdx], al
test al, al
jne 0x24f935
mov rax, qword [r12]
cmp dword [rax + 0x3c], 0
je 0x24f992
mov r8d, dword [rsi + 0x28]
sub r8d, r9d
jbe 0x24f992
mov ecx, dword [rdi + 0x4c]
mov edx, r9d
add rdx, qword [rsi + 0x10]
call fcn.00259490
mov dword [rdi + 0x4c], eax
mov dword [rsi + 0x38], 0
mov dword [rsi + 8], 0x5b
mov rax, qword [r12]
cmp qword [rax + 0x30], 0
jne 0x24f9c3
jmp 0x24fab8
lea r12, [rsi + 0x30]
mov rax, qword [r12]
cmp qword [rax + 0x30], 0
je 0x24fab8
mov r8d, dword [rsi + 0x28]
mov r9d, r8d
cmp r8d, dword [rsi + 0x18]
jne 0x24fa69
sub r8d, r9d
jbe 0x24f9f6
mov rcx, qword [r12]
mov ecx, dword [rcx + 0x3c]
test ecx, ecx
je 0x24f9f6
mov ecx, dword [rdi + 0x4c]
mov edx, r9d
add rdx, qword [rsi + 0x10]
call fcn.00259490
mov dword [rdi + 0x4c], eax
mov r14, qword [rdi + 0x28]
mov rcx, r14
call fcn.00256ba0
mov ebp, dword [r14 + 0x28]
mov eax, dword [rdi + 0x18]
cmp ebp, eax
cmova ebp, eax
test ebp, ebp
je 0x24fa47
mov rcx, qword [rdi + 0x10]
mov rdx, qword [r14 + 0x20]
mov r15d, ebp
mov r8, r15
call sub.msvcrt.dll_memcpy
add qword [rdi + 0x10], r15
add qword [r14 + 0x20], r15
add dword [rdi + 0x1c], ebp
sub dword [rdi + 0x18], ebp
mov eax, dword [r14 + 0x28]
sub eax, ebp
mov dword [r14 + 0x28], eax
jne 0x24fa47
mov rax, qword [r14 + 0x10]
mov qword [r14 + 0x20], rax
xor r8d, r8d
cmp dword [rsi + 0x28], 0
mov r9d, 0
je 0x24fa69
jmp 0x24fbda
mov r8d, dword [rsi + 0x28]
cmp r8d, dword [rsi + 0x18]
je 0x24f9d4
mov rcx, qword [rsi + 0x10]
mov rdx, qword [rsi + 0x30]
mov rdx, qword [rdx + 0x30]
mov ebp, dword [rsi + 0x38]
lea eax, [rbp + 1]
mov dword [rsi + 0x38], eax
movzx eax, byte [rdx + rbp]
lea edx, [r8 + 1]
mov dword [rsi + 0x28], edx
mov edx, r8d
mov byte [rcx + rdx], al
test al, al
jne 0x24fa5b
mov rax, qword [r12]
cmp dword [rax + 0x3c], 0
je 0x24fab8
mov r8d, dword [rsi + 0x28]
sub r8d, r9d
jbe 0x24fab8
mov ecx, dword [rdi + 0x4c]
mov edx, r9d
add rdx, qword [rsi + 0x10]
call fcn.00259490
mov dword [rdi + 0x4c], eax
mov dword [rsi + 8], 0x67
mov rax, qword [r12]
cmp dword [rax + 0x3c], 0
jne 0x24fae0
jmp 0x24fb7c
lea r12, [rsi + 0x30]
mov rax, qword [r12]
cmp dword [rax + 0x3c], 0
je 0x24fb7c
mov eax, dword [rsi + 0x28]
lea ecx, [rax + 2]
cmp ecx, dword [rsi + 0x18]
jbe 0x24fb48
mov r14, qword [rdi + 0x28]
mov rcx, r14
call fcn.00256ba0
mov ebp, dword [r14 + 0x28]
mov eax, dword [rdi + 0x18]
cmp ebp, eax
cmova ebp, eax
test ebp, ebp
je 0x24fb3c
mov rcx, qword [rdi + 0x10]
mov rdx, qword [r14 + 0x20]
mov r15d, ebp
mov r8, r15
call sub.msvcrt.dll_memcpy
add qword [rdi + 0x10], r15
add qword [r14 + 0x20], r15
add dword [rdi + 0x1c], ebp
sub dword [rdi + 0x18], ebp
mov eax, dword [r14 + 0x28]
sub eax, ebp
mov dword [r14 + 0x28], eax
jne 0x24fb3c
mov rax, qword [r14 + 0x10]
mov qword [r14 + 0x20], rax
cmp dword [rsi + 0x28], 0
jne 0x24fbda
xor eax, eax
mov cl, byte [rdi + 0x4c]
mov rdx, qword [rsi + 0x10]
lea ebp, [rax + 1]
mov dword [rsi + 0x28], ebp
mov eax, eax
mov byte [rdx + rax], cl
mov al, byte [rdi + 0x4d]
mov rcx, qword [rsi + 0x10]
mov edx, dword [rsi + 0x28]
lea ebp, [rdx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rcx + rdx], al
xor ecx, ecx
xor edx, edx
xor r8d, r8d
call fcn.00259490
mov dword [rdi + 0x4c], eax
mov dword [rsi + 8], 0x71
mov r14, qword [rdi + 0x28]
mov rcx, r14
call fcn.00256ba0
mov ebp, dword [r14 + 0x28]
mov eax, dword [rdi + 0x18]
cmp ebp, eax
cmova ebp, eax
test ebp, ebp
je 0x24fbd4
mov rcx, qword [rdi + 0x10]
mov rdx, qword [r14 + 0x20]
mov r15d, ebp
mov r8, r15
call sub.msvcrt.dll_memcpy
add qword [rdi + 0x10], r15
add qword [r14 + 0x20], r15
add dword [rdi + 0x1c], ebp
sub dword [rdi + 0x18], ebp
mov eax, dword [r14 + 0x28]
sub eax, ebp
mov dword [r14 + 0x28], eax
jne 0x24fbd4
mov rax, qword [r14 + 0x10]
mov qword [r14 + 0x20], rax
cmp dword [rsi + 0x28], 0
je case.0x24f720.70
mov dword [rsi + 0x40], 0xffffffff
xor eax, eax
add rsp, 0x28
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
cmp dword [rdi + 8], 0
jne 0x24fc07
cmp dword [rsi + 0x9c], 0
je 0x24fd6d
movsxd rbp, dword [rsi + 0xac]
test rbp, rbp
je 0x24fd5e
mov eax, dword [rsi + 0xb0]
cmp eax, 3
je 0x24fd87
cmp eax, 2
jne 0x250085
cmp dword [rsi + 0x9c], 0
jne 0x24fc4d
mov rcx, rsi
call fcn.0024e460
cmp dword [rsi + 0x9c], 0
je 0x25009e
mov dword [rsi + 0x88], 0
mov rax, qword [rsi + 0x50]
mov ecx, dword [rsi + 0x94]
movzx eax, byte [rax + rcx]
mov rcx, qword [rsi + 0x16f8]
mov edx, dword [rsi + 0x16f4]
mov word [rcx + rdx*2], 0
mov rcx, qword [rsi + 0x16e8]
lea ebp, [rdx + 1]
mov dword [rsi + 0x16f4], ebp
mov byte [rcx + rdx], al
inc word [rsi + rax*4 + 0xbc]
mov eax, dword [rsi + 0x16f4]
mov ecx, dword [rsi + 0x16f0]
dec ecx
dec dword [rsi + 0x9c]
mov r8d, dword [rsi + 0x94]
inc r8d
cmp eax, ecx
mov dword [rsi + 0x94], r8d
jne 0x24fc2f
mov eax, dword [rsi + 0x84]
test eax, eax
js 0x24fcd3
mov rdx, qword [rsi + 0x50]
add rdx, rax
jmp 0x24fcd5
xor edx, edx
sub r8d, eax
xor r9d, r9d
mov rcx, rsi
call fcn.00256db0
mov eax, dword [rsi + 0x94]
mov dword [rsi + 0x84], eax
mov r12, qword [rsi]
mov r14, qword [r12 + 0x28]
mov rcx, r14
call fcn.00256ba0
mov ebp, dword [r14 + 0x28]
mov eax, dword [r12 + 0x18]
cmp ebp, eax
cmova ebp, eax
test ebp, ebp
je 0x24fd4c
mov rcx, qword [r12 + 0x10]
mov rdx, qword [r14 + 0x20]
mov r15d, ebp
mov r8, r15
call sub.msvcrt.dll_memcpy
add qword [r12 + 0x10], r15
add qword [r14 + 0x20], r15
add dword [r12 + 0x1c], ebp
sub dword [r12 + 0x18], ebp
mov eax, dword [r14 + 0x28]
sub eax, ebp
mov dword [r14 + 0x28], eax
jne 0x24fd4c
mov rax, qword [r14 + 0x10]
mov qword [r14 + 0x20], rax
mov rax, qword [rsi]
cmp dword [rax + 0x18], 0
jne 0x24fc2f
jmp 0x250196
mov rcx, rsi
mov edx, ebx
call fcn.00250730
jmp 0x25017b
test ebx, ebx
je 0x250281
cmp dword [rsi + 8], 0x29a
jne 0x24fc07
jmp 0x250281
lea r12, [0x002f53e0]
jmp 0x250048
test r11d, r11d
je 0x2500c7
mov dword [rsi + 0x88], 0
cmp r11d, 2
ja 0x24fdc1
mov ecx, dword [rsi + 0x94]
jmp 0x24fe7b
mov dword [rsi + 0x88], 0
mov ecx, dword [rsi + 0x94]
test rcx, rcx
je 0x24fe79
mov rbp, qword [rsi + 0x50]
mov dl, byte [rbp + rcx - 1]
cmp dl, byte [rbp + rcx]
jne 0x24fe7b
add rbp, rcx
cmp dl, byte [rbp + 1]
jne 0x24fe7b
cmp dl, byte [rbp + 2]
jne 0x24fe7b
lea r8, [rbp + 0x102]
xor eax, eax
mov r10d, 2
cmp dl, byte [rbp + rax + 3]
jne 0x24ff78
lea r9, [rbp + r10]
cmp dl, byte [rbp + rax + 4]
jne 0x24ff7f
cmp dl, byte [rbp + rax + 5]
jne 0x24ff85
cmp dl, byte [rbp + rax + 6]
jne 0x24ff8b
cmp dl, byte [rbp + rax + 7]
jne 0x24ff91
cmp dl, byte [rbp + rax + 8]
jne 0x24ff97
cmp dl, byte [rbp + rax + 9]
jne 0x24ff9d
lea r14, [rax + 2]
lea r9, [rax + 8]
cmp r14, 0xf9
ja 0x24fe6f
add r10, 8
cmp dl, byte [rbp + rax + 0xa]
mov rax, r9
je 0x24fe06
lea r9, [rbp + r9 + 2]
jmp 0x24ffa1
xor ecx, ecx
mov rax, qword [rsi + 0x50]
mov ecx, ecx
movzx eax, byte [rax + rcx]
mov rcx, qword [rsi + 0x16f8]
mov edx, dword [rsi + 0x16f4]
mov word [rcx + rdx*2], 0
mov rcx, qword [rsi + 0x16e8]
lea ebp, [rdx + 1]
mov dword [rsi + 0x16f4], ebp
mov byte [rcx + rdx], al
inc word [rsi + rax*4 + 0xbc]
mov eax, dword [rsi + 0x16f4]
mov ecx, dword [rsi + 0x16f0]
dec ecx
dec dword [rsi + 0x9c]
mov r8d, dword [rsi + 0x94]
inc r8d
cmp eax, ecx
mov dword [rsi + 0x94], r8d
jne 0x250048
mov eax, dword [rsi + 0x84]
test eax, eax
js 0x24fef3
mov rdx, qword [rsi + 0x50]
add rdx, rax
jmp 0x24fef5
xor edx, edx
sub r8d, eax
xor r9d, r9d
mov rcx, rsi
call fcn.00256db0
mov eax, dword [rsi + 0x94]
mov dword [rsi + 0x84], eax
mov r13, qword [rsi]
mov r14, qword [r13 + 0x28]
mov rcx, r14
call fcn.00256ba0
mov ebp, dword [r14 + 0x28]
mov eax, dword [r13 + 0x18]
cmp ebp, eax
cmova ebp, eax
test ebp, ebp
je 0x24ff66
mov rcx, qword [r13 + 0x10]
mov rdx, qword [r14 + 0x20]
mov r15d, ebp
mov r8, r15
call sub.msvcrt.dll_memcpy
add qword [r13 + 0x10], r15
add qword [r14 + 0x20], r15
add dword [r13 + 0x1c], ebp
sub dword [r13 + 0x18], ebp
mov eax, dword [r14 + 0x28]
sub eax, ebp
mov dword [r14 + 0x28], eax
jne 0x24ff66
mov rax, qword [r14 + 0x10]
mov qword [r14 + 0x20], rax
mov rax, qword [rsi]
cmp dword [rax + 0x18], 0
jne 0x250048
jmp 0x250196
lea r9, [rbp + r10 + 1]
jmp 0x24ffa1
add r9, 2
jmp 0x24ffa1
add r9, 3
jmp 0x24ffa1
add r9, 4
jmp 0x24ffa1
add r9, 5
jmp 0x24ffa1
add r9, 6
jmp 0x24ffa1
add r9, 7
sub r8d, r9d
mov eax, 0x102
sub eax, r8d
cmp eax, r11d
cmova eax, r11d
mov dword [rsi + 0x88], eax
cmp eax, 3
jb 0x24fe7b
add eax, 0xfd
mov rcx, qword [rsi + 0x16f8]
mov edx, dword [rsi + 0x16f4]
mov word [rcx + rdx*2], 1
mov rcx, qword [rsi + 0x16e8]
lea ebp, [rdx + 1]
mov dword [rsi + 0x16f4], ebp
mov byte [rcx + rdx], al
movzx eax, al
movzx eax, byte [rax + r12]
inc word [rsi + rax*4 + 0x4c0]
movzx eax, byte [0x002f51e0]
inc word [rsi + rax*4 + 0x9b0]
mov eax, dword [rsi + 0x16f4]
mov ecx, dword [rsi + 0x16f0]
dec ecx
mov r8d, dword [rsi + 0x88]
sub dword [rsi + 0x9c], r8d
add r8d, dword [rsi + 0x94]
cmp eax, ecx
mov dword [rsi + 0x94], r8d
mov dword [rsi + 0x88], 0
je 0x24fee0
mov r11d, dword [rsi + 0x9c]
cmp r11d, 0x103
jae 0x24fdb7
mov rcx, rsi
call fcn.0024e460
test ebx, ebx
mov r11d, dword [rsi + 0x9c]
jne 0x24fd93
cmp r11d, 0x103
jae 0x24fd93
jmp 0x250196
shl rbp, 4
lea rax, [0x002f4320]
mov rcx, rsi
mov edx, ebx
call qword [rbp + rax + 8]
jmp 0x25017b
test ebx, ebx
je 0x250196
mov dword [rsi + 0x170c], 0
cmp ebx, 4
jne 0x25040b
mov eax, dword [rsi + 0x84]
test eax, eax
jns 0x2500e4
xor edx, edx
jmp 0x2500eb
mov dword [rsi + 0x170c], 0
cmp ebx, 4
jne 0x2503eb
mov eax, dword [rsi + 0x84]
test eax, eax
js 0x2500c3
mov rdx, qword [rsi + 0x50]
add rdx, rax
mov r8d, dword [rsi + 0x94]
sub r8d, eax
mov r9d, 1
mov rcx, rsi
call fcn.00256db0
mov eax, dword [rsi + 0x94]
mov dword [rsi + 0x84], eax
mov r12, qword [rsi]
mov r14, qword [r12 + 0x28]
mov rcx, r14
call fcn.00256ba0
mov ebp, dword [r14 + 0x28]
mov eax, dword [r12 + 0x18]
cmp ebp, eax
cmova ebp, eax
test ebp, ebp
je 0x25016c
mov rcx, qword [r12 + 0x10]
mov rdx, qword [r14 + 0x20]
mov r15d, ebp
mov r8, r15
call sub.msvcrt.dll_memcpy
add qword [r12 + 0x10], r15
add qword [r14 + 0x20], r15
add dword [r12 + 0x1c], ebp
sub dword [r12 + 0x18], ebp
mov eax, dword [r14 + 0x28]
sub eax, ebp
mov dword [r14 + 0x28], eax
jne 0x25016c
mov rax, qword [r14 + 0x10]
mov qword [r14 + 0x20], rax
mov rax, qword [rsi]
cmp dword [rax + 0x18], 1
mov eax, 3
sbb eax, 0
mov ecx, eax
or ecx, 1
cmp ecx, 3
jne 0x25018c
mov dword [rsi + 8], 0x29a
mov ecx, eax
or ecx, 2
cmp ecx, 2
jne 0x2501ae
xor eax, eax
cmp dword [rdi + 0x18], 0
jne 0x24fbe3
mov dword [rsi + 0x40], 0xffffffff
jmp 0x24fbe3
cmp eax, 1
jne 0x250281
cmp ebx, 5
je 0x250223
cmp ebx, 1
jne 0x2501cb
mov rcx, rsi
call fcn.00256c30
jmp 0x250223
xor edx, edx
xor r8d, r8d
xor r9d, r9d
mov rcx, rsi
call fcn.00256a50
cmp ebx, 3
jne 0x250223
mov rcx, qword [rsi + 0x68]
mov r8d, dword [rsi + 0x74]
dec r8d
mov word [rcx + r8*2], 0
add r8, r8
xor edx, edx
call sub.msvcrt.dll_memset
cmp dword [rsi + 0x9c], 0
jne 0x250223
mov dword [rsi + 0x94], 0
mov dword [rsi + 0x84], 0
mov dword [rsi + 0x170c], 0
mov r14, qword [rdi + 0x28]
mov rcx, r14
call fcn.00256ba0
mov ebp, dword [r14 + 0x28]
mov eax, dword [rdi + 0x18]
cmp ebp, eax
cmova ebp, eax
test ebp, ebp
je 0x250279
mov rcx, qword [rdi + 0x10]
mov rdx, qword [r14 + 0x20]
mov r15d, ebp
mov r8, r15
call sub.msvcrt.dll_memcpy
add qword [rdi + 0x10], r15
add qword [r14 + 0x20], r15
add dword [rdi + 0x1c], ebp
mov eax, dword [rdi + 0x18]
sub eax, ebp
mov dword [rdi + 0x18], eax
mov ecx, dword [r14 + 0x28]
sub ecx, ebp
mov dword [r14 + 0x28], ecx
jne 0x250279
mov rcx, qword [r14 + 0x10]
mov qword [r14 + 0x20], rcx
test eax, eax
je 0x24fbda
xor eax, eax
cmp ebx, 4
jne 0x24fbe3
mov eax, dword [rsi + 0x2c]
test eax, eax
jle 0x25032b
cmp eax, 2
mov eax, dword [rdi + 0x4c]
jne 0x250335
mov rcx, qword [rsi + 0x10]
mov edx, dword [rsi + 0x28]
lea ebp, [rdx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rcx + rdx], al
mov al, byte [rdi + 0x4d]
mov rcx, qword [rsi + 0x10]
mov edx, dword [rsi + 0x28]
lea ebp, [rdx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rcx + rdx], al
mov al, byte [rdi + 0x4e]
mov rcx, qword [rsi + 0x10]
mov edx, dword [rsi + 0x28]
lea ebp, [rdx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rcx + rdx], al
mov al, byte [rdi + 0x4f]
mov rcx, qword [rsi + 0x10]
mov edx, dword [rsi + 0x28]
lea ebp, [rdx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rcx + rdx], al
mov al, byte [rdi + 0xc]
mov rcx, qword [rsi + 0x10]
mov edx, dword [rsi + 0x28]
lea ebp, [rdx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rcx + rdx], al
mov al, byte [rdi + 0xd]
mov rcx, qword [rsi + 0x10]
mov edx, dword [rsi + 0x28]
lea ebp, [rdx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rcx + rdx], al
mov al, byte [rdi + 0xe]
mov rcx, qword [rsi + 0x10]
mov edx, dword [rsi + 0x28]
lea ebp, [rdx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rcx + rdx], al
movzx eax, byte [rdi + 0xf]
jmp 0x250373
mov eax, 1
jmp 0x24fbe3
mov ecx, eax
shr ecx, 0x10
shr eax, 0x18
mov rdx, qword [rsi + 0x10]
mov ebp, dword [rsi + 0x28]
lea ebx, [rbp + 1]
mov dword [rsi + 0x28], ebx
mov byte [rdx + rbp], al
mov rax, qword [rsi + 0x10]
mov edx, dword [rsi + 0x28]
lea ebp, [rdx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rax + rdx], cl
mov ecx, dword [rdi + 0x4c]
movzx eax, cx
mov rdx, qword [rsi + 0x10]
mov ebx, dword [rsi + 0x28]
lea ebp, [rbx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rdx + rbx], ch
mov rcx, qword [rsi + 0x10]
mov edx, dword [rsi + 0x28]
lea ebp, [rdx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rcx + rdx], al
mov rbx, qword [rdi + 0x28]
mov rcx, rbx
call fcn.00256ba0
mov ebp, dword [rbx + 0x28]
mov eax, dword [rdi + 0x18]
cmp ebp, eax
cmova ebp, eax
test ebp, ebp
je 0x2503d1
mov rcx, qword [rdi + 0x10]
mov rdx, qword [rbx + 0x20]
mov r14d, ebp
mov r8, r14
call sub.msvcrt.dll_memcpy
add qword [rdi + 0x10], r14
add qword [rbx + 0x20], r14
add dword [rdi + 0x1c], ebp
sub dword [rdi + 0x18], ebp
mov eax, dword [rbx + 0x28]
sub eax, ebp
mov dword [rbx + 0x28], eax
jne 0x2503d1
mov rax, qword [rbx + 0x10]
mov qword [rbx + 0x20], rax
mov eax, dword [rsi + 0x2c]
test eax, eax
jle 0x2503dd
neg eax
mov dword [rsi + 0x2c], eax
xor eax, eax
cmp dword [rsi + 0x28], 0
sete al
jmp 0x24fbe3
cmp dword [rsi + 0x16f4], 0
je 0x2501b7
mov eax, dword [rsi + 0x84]
test eax, eax
js 0x250422
mov rdx, qword [rsi + 0x50]
add rdx, rax
jmp 0x250424
cmp dword [rsi + 0x16f4], 0
je 0x2501b7
mov eax, dword [rsi + 0x84]
test eax, eax
jns 0x250402
xor edx, edx
mov r8d, dword [rsi + 0x94]
sub r8d, eax
xor r9d, r9d
mov rcx, rsi
call fcn.00256db0
mov eax, dword [rsi + 0x94]
mov dword [rsi + 0x84], eax
mov r12, qword [rsi]
mov r14, qword [r12 + 0x28]
mov rcx, r14
call fcn.00256ba0
mov ebp, dword [r14 + 0x28]
mov eax, dword [r12 + 0x18]
cmp ebp, eax
cmova ebp, eax
test ebp, ebp
je 0x2504a2
mov rcx, qword [r12 + 0x10]
mov rdx, qword [r14 + 0x20]
mov r15d, ebp
mov r8, r15
call sub.msvcrt.dll_memcpy
add qword [r12 + 0x10], r15
add qword [r14 + 0x20], r15
add dword [r12 + 0x1c], ebp
sub dword [r12 + 0x18], ebp
mov eax, dword [r14 + 0x28]
sub eax, ebp
mov dword [r14 + 0x28], eax
jne 0x2504a2
mov rax, qword [r14 + 0x10]
mov qword [r14 + 0x20], rax
mov rax, qword [rsi]
cmp dword [rax + 0x18], 0
jne 0x2501b7
jmp 0x250196