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

Disassembly:
sub esp, 0xc
push esi
mov esi, dword [esp + 0x14]
test esi, esi
je 0x10070177
mov ecx, dword [esi]
mov edx, dword [esi + 0xc]
push ebx
push ebp
push edi
movzx eax, byte [ecx + edx]
mov dword [esi + 0x30], eax
cmp eax, 0xff
je case.0x1006fd76.6
cmp eax, 0x7f
ja case.0x1006fd76.0
movzx eax, byte [eax + 0x10070320]
jmp dword [eax*4 + 0x100702d0]
cmp byte [ecx + edx], 1
jne 0x1006fd9b
mov eax, dword [esi + 0x14]
pop edi
pop ebp
pop ebx
movsd xmm0, qword [ecx + eax]
lea eax, [esi + 0x30]
movsd qword [esi + 0x38], xmm0
pop esi
add esp, 0xc
ret
pop edi
pop ebp
xorps xmm0, xmm0
lea eax, [esi + 0x30]
pop ebx
movsd qword [esi + 0x38], xmm0
pop esi
add esp, 0xc
ret
cmp byte [ecx + edx], 2
lea ebx, [esi + 0x3c]
jne 0x1006fde0
test ebx, ebx
je 0x1006fdcd
mov eax, dword [esi + 0x14]
mov eax, dword [ecx + eax]
xor ecx, ecx
test eax, eax
lea edx, [eax - 1]
cmovg ecx, edx
mov dword [ebx], ecx
mov eax, dword [esi + 0x18]
add eax, dword [esi]
mov dword [esi + 0x38], eax
pop edi
pop ebp
pop ebx
lea eax, [esi + 0x30]
pop esi
add esp, 0xc
ret
test ebx, ebx
je 0x1006fdea
mov dword [ebx], 0
pop edi
xor eax, eax
pop ebp
mov dword [esi + 0x38], eax
lea eax, [esi + 0x30]
pop ebx
pop esi
add esp, 0xc
ret
lea edx, [esi + 0x3c]
lea ecx, [esi + 0x38]
test edx, edx
je 0x100701a8
test ecx, ecx
je 0x100701d9
mov dword [ecx], 0
mov dword [edx], 0
mov ebx, dword [esi]
mov eax, dword [esi + 0xc]
cmp byte [ebx + eax], 3
jne case.0x1006fd76.6
mov eax, dword [esi + 0x14]
pop edi
pop ebp
mov eax, dword [ebx + eax]
mov dword [edx], eax
mov eax, dword [esi + 0x14]
add eax, dword [esi]
mov dword [ecx], eax
lea eax, [esi + 0x30]
pop ebx
pop esi
add esp, 0xc
ret
lea edx, [esi + 0x3c]
lea ecx, [esi + 0x38]
test edx, edx
je 0x1007020a
test ecx, ecx
je 0x1007023b
mov dword [ecx], 0
mov dword [edx], 0
mov ebx, dword [esi]
mov eax, dword [esi + 0xc]
cmp byte [ebx + eax], 4
jmp 0x1006fe25
lea ebx, [esi + 0x38]
lea ebp, [esi + 0x3c]
lea eax, [esi + 0x40]
test ebx, ebx
je 0x1006fe83
test ebp, ebp
je 0x1007026c
cmp byte [ecx + edx], 5
jne 0x1006fed4
test eax, eax
lea edx, [esp + 0x10]
cmovne edx, eax
mov eax, dword [esi + 0x18]
movzx eax, byte [eax + ecx]
mov dword [edx], eax
test ebx, ebx
je case.0x1006fd76.6
mov ecx, dword [esi + 0x14]
mov eax, dword [esi]
mov eax, dword [ecx + eax]
mov dword [ebp], eax
mov ecx, dword [esi + 0x1c]
add ecx, dword [esi]
mov dword [ebx], ecx
cmp dword [edx], 2
jne case.0x1006fd76.6
add eax, 0xfffffffc
mov dword [ebp], eax
lea eax, [ecx + 4]
pop edi
pop ebp
mov dword [ebx], eax
lea eax, [esi + 0x30]
pop ebx
pop esi
add esp, 0xc
ret
test ebx, ebx
je 0x1006fede
mov dword [ebx], 0
test ebp, ebp
je 0x1006fee9
mov dword [ebp], 0
test eax, eax
je case.0x1006fd76.6
pop edi
pop ebp
mov dword [eax], 0
lea eax, [esi + 0x30]
pop ebx
pop esi
add esp, 0xc
ret
cmp byte [ecx + edx], 7
jne 0x1006ff25
mov edx, dword [esi + 0x14]
lea eax, [esi + 0x38]
add edx, ecx
push eax
push edx
call fcn.10076f30
add esp, 8
lea eax, [esi + 0x30]
pop edi
pop ebp
pop ebx
pop esi
add esp, 0xc
ret
lea eax, [esi + 0x38]
xor edx, edx
push eax
push edx
call fcn.10076f30
add esp, 8
lea eax, [esi + 0x30]
pop edi
pop ebp
pop ebx
pop esi
add esp, 0xc
ret
cmp byte [ecx + edx], 8
jne 0x1006ff5d
mov eax, dword [esi + 0x14]
pop edi
pop ebp
pop ebx
cmp byte [ecx + eax], 0
setne al
mov byte [esi + 0x38], al
lea eax, [esi + 0x30]
pop esi
add esp, 0xc
ret
pop edi
xor al, al
pop ebp
mov byte [esi + 0x38], al
lea eax, [esi + 0x30]
pop ebx
pop esi
add esp, 0xc
ret
cmp byte [ecx + edx], 9
jne 0x1006ff8e
mov eax, dword [esi + 0x14]
pop edi
pop ebp
pop ebx
mov edx, dword [ecx + eax]
mov eax, dword [ecx + eax + 4]
mov dword [esi + 0x3c], eax
lea eax, [esi + 0x30]
mov dword [esi + 0x38], edx
pop esi
add esp, 0xc
ret
pop edi
xorps xmm0, xmm0
movlpd qword [esp + 0x10], xmm0
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
pop ebp
mov dword [esi + 0x3c], eax
lea eax, [esi + 0x30]
pop ebx
mov dword [esi + 0x38], edx
pop esi
add esp, 0xc
ret
xor eax, eax
lea ebp, [esi + 0x3c]
xor ebx, ebx
cmp byte [ecx + edx], 0xb
jne 0x1006ffc7
mov eax, dword [esi + 0x14]
mov ebx, dword [esi + 0x18]
add eax, ecx
add ebx, ecx
test ebp, ebp
je 0x1006fdd2
pop edi
mov dword [ebp], ebx
pop ebp
mov dword [esi + 0x38], eax
lea eax, [esi + 0x30]
pop ebx
pop esi
add esp, 0xc
ret
lea edx, [esi + 0x38]
lea ebx, [esi + 0x3c]
test edx, edx
je 0x1006fff0
mov dword [edx], 0
mov ebp, dword [esi]
xor ecx, ecx
mov eax, dword [esi + 0xc]
cmp byte [eax + ebp], 0xc
jne 0x10070020
test ebx, ebx
je 0x10070010
mov eax, dword [esi + 0x14]
mov eax, dword [eax + ebp]
mov dword [ebx], eax
test eax, eax
je 0x10070010
dec eax
mov dword [ebx], eax
test edx, edx
je 0x1007001b
mov eax, dword [esi + 0x18]
add eax, dword [esi]
mov dword [edx], eax
mov ecx, dword [esi + 0x1c]
add ecx, dword [esi]
lea eax, [esi + 0x40]
push eax
push ecx
call fcn.10076f30
add esp, 8
lea eax, [esi + 0x30]
pop edi
pop ebp
pop ebx
pop esi
add esp, 0xc
ret
cmp byte [ecx + edx], 0xd
lea ebx, [esi + 0x3c]
jmp 0x1006fdb5
xor ebx, ebx
lea eax, [esi + 0x3c]
xor ebp, ebp
cmp byte [ecx + edx], 0xe
jne 0x10070067
mov eax, dword [esi + 0x14]
mov ebx, dword [esi + 0x18]
add ebx, ecx
mov eax, dword [ecx + eax]
test eax, eax
lea ecx, [eax - 1]
cmovg ebp, ecx
lea eax, [esi + 0x3c]
test eax, eax
je 0x1007006d
mov dword [eax], ebp
pop edi
pop ebp
mov dword [esi + 0x38], ebx
lea eax, [esi + 0x30]
pop ebx
pop esi
add esp, 0xc
ret
cmp byte [ecx + edx], 0xf
lea ebp, [esi + 0x3c]
lea eax, [esi + 0x44]
lea ebx, [esi + 0x40]
jne 0x100700c5
test ebx, ebx
je 0x1007009f
mov eax, dword [esi + 0x18]
mov eax, dword [ecx + eax]
test eax, eax
je 0x1007029d
dec eax
mov dword [ebx], eax
mov ecx, dword [esi + 0x20]
mov eax, dword [esi]
pop edi
mov eax, dword [ecx + eax]
mov dword [esi + 0x44], eax
mov eax, dword [esi + 0x20]
add eax, dword [esi]
mov dword [ebp], eax
mov eax, dword [esi + 0x1c]
add eax, dword [esi]
pop ebp
mov dword [esi + 0x38], eax
lea eax, [esi + 0x30]
pop ebx
pop esi
add esp, 0xc
ret
test ebx, ebx
je 0x100700cf
mov dword [ebx], 0
test eax, eax
je 0x100700d9
mov dword [eax], 0
test ebp, ebp
je 0x100700e4
mov dword [ebp], 0
pop edi
xor eax, eax
pop ebp
mov dword [esi + 0x38], eax
lea eax, [esi + 0x30]
pop ebx
pop esi
add esp, 0xc
ret
cmp byte [ecx + edx], 0x10
jne 0x1006fdea
mov eax, dword [esi + 0x14]
pop edi
pop ebp
pop ebx
mov eax, dword [ecx + eax]
mov dword [esi + 0x38], eax
lea eax, [esi + 0x30]
pop esi
add esp, 0xc
ret
xor eax, eax
lea ebx, [esi + 0x3c]
cmp byte [ecx + edx], 0x11
lea ebp, [esi + 0x38]
jne 0x1007012e
mov eax, dword [esi + 0x14]
mov edx, dword [ecx + eax]
mov ecx, dword [ecx + eax + 4]
mov eax, edx
jmp 0x10070130
xor ecx, ecx
test ebp, ebp
je 0x10070137
mov dword [ebp], ecx
test ebx, ebx
je case.0x1006fd76.6
pop edi
pop ebp
mov dword [ebx], eax
lea eax, [esi + 0x30]
pop ebx
pop esi
add esp, 0xc
ret
cmp byte [ecx + edx], 0x12
jmp 0x1006ff71
lea eax, [esi + 0x38]
push eax
push esi
call fcn.1006ea90
add esp, 8
lea eax, [esi + 0x30]
pop edi
pop ebp
pop ebx
pop esi
add esp, 0xc
ret
pop edi
pop ebp
pop ebx
xor eax, eax
pop esi
add esp, 0xc
ret
push 0x100faf30
push str.bson_iter_value
push 0x951
push str.C:Usersprocr_vcpkg_buildtreeslibbson_src1.26.1_017d46e88c.clean_srclibbson_src_bson_bson_iter.c
push str._s:_d__s__:_precondition_failed:__s_n
push 2
call fcn.1004c994
add esp, 4
push eax
call fcn.10070de0
add esp, 0x18
call fcn.10056f35
push str.document_len
push str.bson_iter_document
push 0x700
push str.C:Usersprocr_vcpkg_buildtreeslibbson_src1.26.1_017d46e88c.clean_srclibbson_src_bson_bson_iter.c
push str._s:_d__s__:_precondition_failed:__s_n
push 2
call fcn.1004c994
add esp, 4
push eax
call fcn.10070de0
add esp, 0x18
call fcn.10056f35
push str.document
push str.bson_iter_document
push 0x701
push str.C:Usersprocr_vcpkg_buildtreeslibbson_src1.26.1_017d46e88c.clean_srclibbson_src_bson_bson_iter.c
push str._s:_d__s__:_precondition_failed:__s_n
push 2
call fcn.1004c994
add esp, 4
push eax
call fcn.10070de0
add esp, 0x18
call fcn.10056f35
push str.array_len
push str.bson_iter_array
push 0x73e
push str.C:Usersprocr_vcpkg_buildtreeslibbson_src1.26.1_017d46e88c.clean_srclibbson_src_bson_bson_iter.c
push str._s:_d__s__:_precondition_failed:__s_n
push 2
call fcn.1004c994
add esp, 4
push eax
call fcn.10070de0
add esp, 0x18
call fcn.10056f35
push str.array
push str.bson_iter_array
push 0x73f
push str.C:Usersprocr_vcpkg_buildtreeslibbson_src1.26.1_017d46e88c.clean_srclibbson_src_bson_bson_iter.c
push str._s:_d__s__:_precondition_failed:__s_n
push 2
call fcn.1004c994
add esp, 4
push eax
call fcn.10070de0
add esp, 0x18
call fcn.10056f35
push str._binary__binary_len
push str.bson_iter_binary
push 0x38b
push str.C:Usersprocr_vcpkg_buildtreeslibbson_src1.26.1_017d46e88c.clean_srclibbson_src_bson_bson_iter.c
push str._s:_d__s__:_precondition_failed:__s_n
push 2
call fcn.1004c994
add esp, 4
push eax
call fcn.10070de0
add esp, 0x18
call fcn.10056f35
push str.len___0
push str.bson_iter_codewscope
push 0x5b3
push str.C:Usersprocr_vcpkg_buildtreeslibbson_src1.26.1_017d46e88c.clean_srclibbson_src_bson_bson_iter.c
push str._s:_d__s__:_precondition_failed:__s_n
push 2
call fcn.1004c994
add esp, 4
push eax
call fcn.10070de0
add esp, 0x18
call fcn.10056f35
nop
insd dword es:[edi], dx
add dword [edi], eax
adc byte [ebp - 3], bh
push es
adc byte [esi - 0x5eff903], ch
std
push es
adc byte [ecx - 2], al
push es
adc byte [esi - 2], ch
push es
adc ch, dl
std
push es
adc byte [edx], al
inc dword [esi]
adc byte [edi], bh
inc dword [esi]
adc byte [ebp - 1], ch
push es
adc byte [eax - 0x1feff901], dh
inc dword [esi]
adc byte [eax], bh
add byte [edi], al
adc byte [eax + eax + 7], al
adc byte [ebx], bh
pop es
adc ah, dh
add byte [edi], al
adc byte [edx], dl
add dword [edi], eax
adc byte [ecx + eax + 7], cl
adc byte [ebp + 1], dl
pop es
adc byte [ebp + 1], ch
pop es
adc byte [eax], al
add dword [edx], eax
add eax, dword [eax + 151521030]
push es
or cl, byte [ebx]
or al, 13
push cs
movups xmm2, xmmword [ecx]
adc dl, byte [ebx]
adc edx, dword [ebx]
adc edx, dword [ebx]
adc edx, dword [ebx]
adc edx, dword [ebx]
adc edx, dword [ebx]
adc edx, dword [ebx]
adc edx, dword [ebx]
adc edx, dword [ebx]
adc edx, dword [ebx]
adc edx, dword [ebx]
adc edx, dword [ebx]
adc edx, dword [ebx]
adc edx, dword [ebx]
adc edx, dword [ebx]
adc edx, dword [ebx]
adc edx, dword [ebx]
adc edx, dword [ebx]
adc edx, dword [ebx]
adc edx, dword [ebx]
adc edx, dword [ebx]
adc edx, dword [ebx]
adc edx, dword [ebx]
adc edx, dword [ebx]
adc edx, dword [ebx]
adc edx, dword [ebx]
adc edx, dword [ebx]
adc edx, dword [ebx]
adc edx, dword [ebx]
adc edx, dword [ebx]
adc edx, dword [ebx]
adc edx, dword [ebx]
adc edx, dword [ebx]
adc edx, dword [ebx]
adc edx, dword [ebx]
adc edx, dword [ebx]
adc edx, dword [ebx]
adc edx, dword [ebx]
adc edx, dword [ebx]
adc edx, dword [ebx]
adc edx, dword [ebx]
adc edx, dword [ebx]
adc edx, dword [ebx]
adc edx, dword [ebx]
adc edx, dword [ebx]
adc edx, dword [ebx]
adc edx, dword [ebx]
adc edx, dword [ebx]
adc edx, dword [ebx]
adc edx, dword [ebx]
adc edx, dword [ebx]
adc edx, dword [ebx]
adc edx, dword [ebx]
adc edx, dword [ebx]
push es