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

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0xa8
cmp byte [rdx], 0x2e
mov qword [rsp + 0xf0], rcx
mov r13, r8
mov rsi, r9
jne 0x4034f6
cmp byte [rdx + 1], 0
jne 0x4034f6
mov rax, qword [rsp + 0xf0]
mov byte [rsp + 0x3b], 0x2b
mov r12, qword [rax]
movzx r14d, byte [r12]
lea eax, [r14 - 0x2b]
test al, 0xfd
jne 0x402e4f
mov byte [rsp + 0x3b], r14b
add r12, 1
movzx r14d, byte [r12]
cmp r14b, 0x4e
je 0x402f32
jle 0x402f5c
cmp r14b, 0x69
je 0x402f66
cmp r14b, 0x6e
je 0x402f32
test r14b, r14b
je 0x4034b9
xor edi, edi
xor ebx, ebx
cmp r14b, 0x2e
mov rbp, r12
mov r15, qword [0x0051ee30]
jne 0x402eb7
jmp 0x40345c
test edi, edi
jne 0x402ee1
add rbp, 1
movzx r14d, byte [rbp]
add r12, 1
xor edi, edi
test r14b, r14b
je 0x402ef7
cmp r14b, 0x2e
je 0x402fe6
movsx edx, r14b
mov rcx, r13
call sub.msvcrt.dll_strchr
test rax, rax
jne 0x403071
movzx eax, r14b
test byte [r15 + rax*2], 4
je 0x4033c9
cmp r14b, 0x30
jle 0x402e95
add rbp, 1
movzx r14d, byte [rbp]
add ebx, 1
mov edi, 1
test r14b, r14b
jne 0x402ead
mov rax, qword [rsp + 0xf0]
mov r10d, ebx
xor r15d, r15d
test r10d, r10d
mov qword [rax], rbp
jne 0x40310d
mov rax, qword [rsi]
mov dword [rsi + 0x18], 0
xor edi, edi
sub rax, 2
mov qword [rsi + 0x10], rax
movzx eax, byte [rsp + 0x3b]
mov byte [rsi + 0x1c], al
jmp 0x402fd0
mov r8d, 3
mov rdx, r12
lea rcx, [0x004e664b]
call qword [sym.imp.msvcrt.dll__strnicmp]
test eax, eax
mov edi, eax
je 0x40342a
movzx r14d, byte [r12]
jmp 0x402e73
cmp r14b, 0x49
jne 0x402e73
mov r8d, 3
mov rdx, r12
lea rcx, [0x004e664f]
mov r15, qword [sym.imp.msvcrt.dll__strnicmp]
call r15
test eax, eax
mov edi, eax
jne 0x402f52
cmp byte [rsp + 0x3b], 0x2b
lea rbx, [r12 + 3]
mov dword [rsi + 0x18], 0
mov r8d, 5
lea rcx, [0x004e6653]
mov rdx, rbx
sete al
add r12, 8
lea eax, [rax + rax + 0x4e]
mov byte [rsi + 0x1c], al
mov rax, qword [rsi]
mov qword [rsi + 0x10], rax
call r15
test eax, eax
mov rax, qword [rsp + 0xf0]
cmove rbx, r12
mov qword [rax], rbx
mov eax, edi
add rsp, 0xa8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
test ebx, ebx
je 0x40345c
movzx eax, byte [rbp + 1]
lea rdi, [rbp + 1]
test al, al
je 0x4034e8
mov r9, qword [0x0051ee30]
movzx ecx, al
movsx edx, al
test byte [r9 + rcx*2], 4
je 0x4034d5
xor r8d, r8d
xor r15d, r15d
xor r11d, r11d
xor r10d, r10d
jmp 0x403052
lea r10d, [r10 + r8 + 1]
mov r11d, 1
xor r8d, r8d
add rdi, 1
movzx eax, byte [rdi]
test al, al
je 0x4030f3
movzx ecx, al
movsx edx, al
test byte [r9 + rcx*2], 4
je 0x403467
cmp al, 0x30
jne 0x403024
test ebx, ebx
jne 0x403390
test r11d, r11d
jne 0x403390
add r12, 1
sub r15d, 1
jmp 0x403032
xor r15d, r15d
xor r10d, r10d
test r14b, r14b
je 0x403490
movzx r8d, byte [rbp + 1]
lea rdi, [rbp + 1]
test r8b, r8b
je 0x4030f3
movsx r13d, r8b
lea rcx, [0x004e6659]
mov dword [rsp + 0x30], r10d
mov edx, r13d
mov byte [rsp + 0x28], r8b
call sub.msvcrt.dll_strchr
test rax, rax
movzx r8d, byte [rsp + 0x28]
mov r10d, dword [rsp + 0x30]
je 0x4033e0
movzx eax, byte [rbp + 2]
lea rdi, [rbp + 2]
test al, al
je 0x4030e4
mov r9, qword [0x0051ee30]
movsx r13d, al
movzx eax, al
test byte [r9 + rax*2], 4
jne 0x4033fe
xor edx, edx
cmp r8b, 0x2d
jne 0x403498
sub r15d, edx
add r10d, ebx
mov rbp, rdi
mov rax, qword [rsp + 0xf0]
test r10d, r10d
mov qword [rax], rbp
je 0x402f11
mov r14, qword [rsi + 8]
sub r14, qword [rsi]
mov ecx, 0xa19d3fb
sar r14, 1
add r14d, 1
imul edx, r14d, 0xf42400
shr edx, 3
mov eax, edx
mul ecx
mov ecx, 0x431bde83
shr edx, 0xe
lea r9d, [rdx + 1]
cmp r9d, r10d
cmovbe r10d, r9d
imul edx, r10d, 0x32b048
sub ebx, r10d
mov ebp, r10d
add ebx, r15d
mov eax, edx
mul ecx
shr edx, 0x12
lea r15d, [rdx + 1]
shr r15d, 4
add r15d, 2
lea edx, [r15 + r15]
mov rdi, rdx
mov rcx, rdx
mov qword [rsp + 0x28], rdx
call fcn.004cb930
cmp edi, 8
mov r13, rax
mov rdx, qword [rsp + 0x28]
jae 0x403399
test dil, 4
jne 0x4034a6
test edi, edi
je 0x4031a3
and edi, 2
mov byte [rax], 0
jne 0x4034c9
mov eax, r15d
mov r9, qword [0x0051ee30]
mov edi, ebp
lea r8, [r13 + rax*2 - 2]
movsx eax, byte [r12]
movzx edx, al
test byte [r9 + rdx*2], 4
je 0x403209
sub eax, 0x30
cmp r13, r8
ja 0x4031e9
mov rdx, r13
nop
movzx ecx, word [rdx]
add rdx, 2
lea ecx, [rcx + rcx*4]
lea eax, [rax + rcx*2]
mov word [rdx - 2], ax
sar eax, 0x10
cmp r8, rdx
jae 0x4031d0
test eax, eax
jne 0x40350e
add r12, 1
sub edi, 1
je 0x403213
movsx eax, byte [r12]
movzx edx, al
test byte [r9 + rdx*2], 4
jne 0x4031c3
add edi, 1
jmp 0x4031f1
mov r15d, eax
lea edx, [r15 - 1]
cmp word [r13 + rdx*2], 0
mov rax, rdx
sete cl
cmp r15d, 1
seta dl
test cl, dl
jne 0x403210
lea rax, [r13 + r15*2 - 2]
lea ebp, [r14 + r14 + 2]
mov qword [rsp + 0x60], r13
mov dword [rsp + 0x78], 0
mov byte [rsp + 0x7c], 0x2b
mov qword [rsp + 0x68], rax
mov qword [rsp + 0x70], rax
mov eax, ebx
sar eax, 0x1f
mov rcx, rbp
mov r15d, eax
xor r15d, ebx
sub r15d, eax
call fcn.004cb930
mov rcx, rbp
mov r12, rax
call fcn.004cb930
xor edx, edx
mov rcx, r12
mov r8, rbp
mov qword [rsp + 0x28], rax
call sub.msvcrt.dll_memset
mov eax, 1
mov rcx, qword [rsp + 0x28]
mov dword [rsp + 0x58], 0
mov word [r12], ax
lea rax, [r14 + r14 - 2]
mov qword [rsp + 0x40], r12
mov qword [rsp + 0x50], r12
mov byte [rsp + 0x5c], 0x2b
lea rdx, [r12 + rax]
add rax, rcx
test ebx, ebx
mov qword [rsp + 0x88], rax
mov rax, qword [0x0051f4d0]
mov qword [rsp + 0x48], rdx
mov qword [rsp + 0x80], rcx
mov r10d, dword [rax]
js 0x403450
mov r11, qword [0x0051f140]
lea rbx, [rsp + 0x40]
je 0x403315
lea rbx, [rsp + 0x40]
lea r14, [rsp + 0x80]
add r11, 0x20
mov ebp, 1
test r15b, 1
je 0x40337d
cmp r10d, ebp
jge 0x403350
mov edi, 2
lea rdx, [rsp + 0x60]
mov r8, rsi
mov rcx, rbx
call fcn.0040bf20
movzx eax, byte [rsp + 0x3b]
mov rcx, qword [rsp + 0x28]
mov byte [rsi + 0x1c], al
call sub.msvcrt.dll_free
mov rcx, r12
call sub.msvcrt.dll_free
mov rcx, r13
call sub.msvcrt.dll_free
jmp 0x402fd0
mov rcx, r11
mov r8, r14
mov rdx, rbx
mov dword [rsp + 0x3c], r10d
mov qword [rsp + 0x30], r11
call fcn.0040bf20
mov rdx, rbx
mov rcx, r14
call fcn.0040be60
mov r10d, dword [rsp + 0x3c]
mov r11, qword [rsp + 0x30]
add ebp, 1
add r11, 0x20
sar r15d, 1
jne 0x403305
jmp 0x403315
add r8d, 1
jmp 0x403032
mov qword [rax], 0
mov qword [rax + rdx - 8], 0
lea rdx, [rax + 8]
mov rcx, rax
xor eax, eax
and rdx, 0xfffffffffffffff8
sub rcx, rdx
add ecx, edi
mov rdi, rdx
shr ecx, 3
rep stosq qword [rdi], rax
jmp 0x4031a3
xor r15d, r15d
xor r10d, r10d
test r14b, r14b
je 0x403490
add r10d, ebx
jmp 0x4030f9
mov r9, qword [0x0051ee30]
movzx eax, r8b
xor edx, edx
mov r8d, 0x2b
test byte [r9 + rax*2], 4
je 0x403498
xor edx, edx
lea eax, [rdx + rdx*4]
add rdi, 1
lea edx, [r13 + rax*2 - 0x30]
movzx eax, byte [rdi]
test al, al
je 0x4030e6
movsx r13d, al
movzx eax, al
test byte [r9 + rax*2], 4
jne 0x403400
jmp 0x4030e6
mov rax, qword [rsi]
add r12, 3
mov byte [rsi + 0x1c], 0
mov dword [rsi + 0x18], 0
mov qword [rsi + 0x10], rax
mov rax, qword [rsp + 0xf0]
mov qword [rax], r12
jmp 0x402fd0
mov r11, qword [0x0051f130]
jmp 0x4032ef
add r12, 1
xor ebx, ebx
jmp 0x402fee
mov rcx, r13
mov dword [rsp + 0x28], r10d
mov rbp, rdi
call sub.msvcrt.dll_strchr
mov r10d, dword [rsp + 0x28]
test rax, rax
jne 0x403080
jmp 0x4033d8
mov r10d, ebx
jmp 0x4030f9
add r15d, edx
add r10d, ebx
mov rbp, rdi
jmp 0x4030f9
mov dword [rax], 0
mov dword [rax + rdx - 4], 0
jmp 0x4031a3
mov rax, qword [rsp + 0xf0]
mov qword [rax], r12
jmp 0x402f11
xor ecx, ecx
mov word [rax + rdx - 2], cx
jmp 0x4031a3
mov rcx, r13
mov rbp, rdi
xor r15d, r15d
call sub.msvcrt.dll_strchr
xor r10d, r10d
jmp 0x40347c
mov r10d, ebx
mov rbp, rdi
xor r15d, r15d
jmp 0x4030f9
lea r8, str.atof_generic
lea rcx, str._builds_idf_crosstool_NG_.build_HOST_x86_64_w64_mingw32_xtensa_esp32s2_elf_src_binutils_gas_atof_generic.c
mov edx, 0x68
call fcn.00412bc0
lea rcx, str.failed_sanity_check
call fcn.00412b20
nop
nop
nop
nop
nop
nop