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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x58
mov edi, dword [esp + 0x74]
mov esi, dword [esp + 0x78]
mov ebp, dword [esp + 0x6c]
mov eax, dword [edi + 4]
nop word cs:[eax + eax]
mov ecx, eax
test eax, eax
jle 0x437689
mov edx, dword [edi]
lea eax, [ecx - 1]
cmp dword [edx + ecx*4 - 4], 0
je 0x437670
mov al, 1
mov dword [esp], eax
jmp 0x437690
mov dword [esp], 0
mov eax, dword [esi + 4]
mov edi, eax
nop word cs:[eax + eax]
nop
mov edx, edi
test edi, edi
jle 0x4376bc
mov ebx, dword [esi]
lea edi, [edx - 1]
cmp dword [ebx + edx*4 - 4], 0
je 0x4376a0
mov bl, 1
cmp byte [esp], 0
jne 0x4376c4
jmp 0x4376d5
xor ebx, ebx
cmp byte [esp], 0
je 0x4376d5
mov edi, dword [esp + 0x74]
mov edi, dword [edi]
cmp dword [edi + ecx*4 - 4], 0
je 0x4377df
test bl, bl
je 0x4376e6
mov ecx, dword [esi]
cmp dword [ecx + edx*4 - 4], 0
je 0x4377df
test eax, eax
je 0x4377d1
mov ecx, dword [esi]
xor edx, edx
cmp eax, 8
mov edi, 0
jb 0x437747
mov edx, eax
lea edi, [ecx + 0x10]
pxor xmm0, xmm0
pxor xmm1, xmm1
and edx, 0xfffffff8
mov ebx, edx
nop
movdqu xmm2, xmmword [edi - 0x10]
movdqu xmm3, xmmword [edi]
add edi, 0x20
add ebx, 0xfffffff8
por xmm0, xmm2
por xmm1, xmm3
jne 0x437710
por xmm1, xmm0
cmp eax, edx
pshufd xmm0, xmm1, 0x4e
por xmm0, xmm1
pshufd xmm1, xmm0, 0xe5
por xmm1, xmm0
movd edi, xmm1
je 0x437758
sub eax, edx
lea ecx, [ecx + edx*4]
nop dword [eax]
or edi, dword [ecx]
add ecx, 4
dec eax
jne 0x437750
test edi, edi
je 0x4377d1
mov eax, dword [esp + 0x7c]
mov edi, eax
push eax
call sym.fastboot.exe_BN_CTX_start
add esp, 4
push edi
call sym.fastboot.exe_BN_CTX_get
add esp, 4
mov dword [esp + 0x2c], eax
push edi
call sym.fastboot.exe_BN_CTX_get
add esp, 4
mov dword [esp + 4], eax
push edi
call sym.fastboot.exe_BN_CTX_get
add esp, 4
mov edi, eax
test ebp, ebp
jne 0x4377a2
push dword [esp + 0x7c]
call sym.fastboot.exe_BN_CTX_get
add esp, 4
mov ebp, eax
test edi, edi
mov dword [esp + 0x18], ebp
je 0x437f85
cmp dword [esp + 0x18], 0
je 0x437f85
mov ecx, dword [esi + 4]
mov ebp, edi
nop
test ecx, ecx
jle 0x437801
mov eax, dword [esi]
mov eax, dword [eax + ecx*4 - 4]
dec ecx
test eax, eax
je 0x4377c0
jmp 0x43780f
push 0xda
push str.external_boringssl_src_crypto_fipsmodule_bn_div.c
push 0x69
jmp 0x4377eb
push 0xd5
push str.external_boringssl_src_crypto_fipsmodule_bn_div.c
push 0x6f
push 0
push 3
call sym.fastboot.exe_ERR_put_error
add esp, 0x14
xor eax, eax
add esp, 0x58
pop esi
pop edi
pop ebx
pop ebp
ret
test ecx, ecx
je 0x4379d8
mov eax, dword [esi]
mov eax, dword [eax + ecx*4 - 4]
xor ecx, ecx
test eax, eax
mov edx, eax
setne cl
shr edx, 0x10
mov edi, edx
xor edx, eax
neg edi
sar edi, 0x1f
and edx, edi
and edi, 0x10
xor edx, eax
or edi, ecx
mov eax, edx
shr eax, 8
mov ecx, eax
xor eax, edx
neg ecx
sar ecx, 0x1f
and eax, ecx
and ecx, 8
xor eax, edx
or ecx, edi
mov edx, eax
shr edx, 4
mov edi, edx
xor edx, eax
neg edi
sar edi, 0x1f
and edx, edi
and edi, 4
xor edx, eax
or edi, ecx
mov eax, edx
shr eax, 2
mov ecx, eax
xor eax, edx
neg ecx
sar ecx, 0x1f
and eax, ecx
and ecx, 2
xor eax, edx
or ecx, edi
shr eax, 1
neg eax
shr eax, 0x1f
add eax, ecx
and eax, 0x1f
mov ecx, 0x20
sub ecx, eax
mov ebx, ecx
push ecx
push esi
push ebp
call sym.fastboot.exe_BN_lshift
add esp, 0xc
test eax, eax
je 0x437f85
mov eax, dword [ebp + 4]
mov edi, dword [esp + 0x74]
nop word cs:[eax + eax]
nop dword [eax + eax]
test eax, eax
jle 0x4378cd
mov edx, dword [ebp]
lea ecx, [eax - 1]
cmp dword [edx + eax*4 - 4], 0
mov eax, ecx
je 0x4378b0
mov eax, dword [esp + 4]
inc ecx
mov dword [ebp + 4], ecx
jmp 0x4378dd
mov dword [ebp + 4], eax
mov eax, dword [esp + 4]
jne 0x4378dd
mov dword [ebp + 0xc], 0
add ebx, 0x20
mov dword [ebp + 0xc], 0
mov dword [esp + 0x4c], ebx
push ebx
push edi
push eax
call sym.fastboot.exe_BN_lshift
add esp, 0xc
test eax, eax
je 0x437f85
mov edi, dword [esp + 4]
mov ecx, dword [edi + 4]
nop word cs:[eax + eax]
nop
mov eax, ecx
test ecx, ecx
jle 0x437928
mov edx, dword [edi]
lea ecx, [eax - 1]
cmp dword [edx + eax*4 - 4], 0
je 0x437910
inc ecx
mov dword [edi + 4], ecx
jmp 0x437934
mov dword [edi + 4], eax
jne 0x437934
mov dword [edi + 0xc], 0
mov dword [edi + 0xc], 0
mov ecx, dword [ebp + 4]
lea edx, [ecx + 1]
cmp eax, edx
jle 0x43796e
inc eax
push eax
push edi
call fcn.004350a0
add esp, 8
test eax, eax
je 0x437f85
mov edx, dword [esp + 4]
mov eax, dword [edx]
mov ecx, dword [edx + 4]
mov dword [eax + ecx*4], 0
mov edi, dword [edx + 4]
inc edi
jmp 0x4379a4
add ecx, 2
push ecx
push edi
call fcn.004350a0
add esp, 8
test eax, eax
je 0x437f85
mov edx, dword [esp + 4]
mov eax, dword [edx + 4]
jmp 0x43799a
mov ecx, dword [edx]
mov dword [ecx + eax*4], 0
inc eax
mov edi, dword [ebp + 4]
add edi, 2
cmp eax, edi
jl 0x437990
mov dword [edx + 4], edi
mov dword [esp + 0xc], edi
mov dword [esp + 0x44], 0
mov ecx, dword [ebp + 4]
mov eax, dword [ebp]
mov ebx, dword [edx]
mov edx, dword [eax + ecx*4 - 4]
sub edi, ecx
cmp ecx, 1
mov dword [esp + 0x24], ecx
mov dword [esp + 0x50], edx
jne 0x4379df
mov dword [esp + 0x34], 0
jmp 0x4379e7
xor eax, eax
jmp 0x43787b
mov eax, dword [eax + ecx*4 - 8]
mov dword [esp + 0x34], eax
mov eax, dword [esi + 0xc]
mov ecx, dword [esp + 0x74]
xor eax, dword [ecx + 0xc]
mov ecx, dword [esp + 0x18]
mov dword [ecx + 0xc], eax
lea eax, [edi + 1]
push eax
push ecx
call fcn.004350a0
add esp, 8
test eax, eax
je 0x437f85
mov eax, dword [esp + 0x18]
lea esi, [edi - 1]
lea ecx, [edi*4 - 4]
mov dword [eax + 4], esi
add ecx, dword [eax]
mov eax, dword [esp + 0x24]
inc eax
mov dword [esp + 0x14], ecx
mov dword [esp + 0x30], eax
push eax
push dword [esp + 0x30]
call fcn.004350a0
add esp, 8
test eax, eax
je 0x437f85
mov eax, dword [esp + 0x18]
cmp dword [eax + 4], 0
je 0x437a5a
add dword [esp + 0x14], 0xfffffffc
test esi, esi
jg 0x437a69
jmp 0x437e6b
mov dword [eax + 0xc], 0
test esi, esi
jle 0x437e6b
lea eax, [ebx + edi*4]
mov ecx, dword [esp + 0x24]
mov edi, dword [esp + 0x30]
mov dword [esp + 0x40], 0
mov dword [esp + 0x1c], ebp
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0xc]
mov esi, ecx
and edi, 3
lea edx, [ebx + eax*4 - 4]
dec eax
and esi, 3
mov dword [esp + 0x48], edi
sub eax, ecx
mov dword [esp + 0x3c], esi
mov dword [esp + 0xc], eax
jmp 0x437ad0
mov esi, dword [esp + 0x2c]
mov ebp, dword [esp + 0x1c]
mov edx, dword [esp + 0x30]
jmp 0x437c45
mov ebp, dword [esp + 0x1c]
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x20]
test ebx, ebx
jne 0x437e44
jmp 0x437e46
mov eax, dword [edx]
mov ebx, dword [esp + 0x50]
mov dword [esp + 0x20], edx
mov dword [esp + 8], 0xffffffff
cmp eax, ebx
je 0x437b40
mov ecx, dword [esp + 0x20]
mov esi, dword [ecx - 8]
mov edi, dword [ecx - 4]
push 0
push ebx
push eax
push edi
call fcn.004ba9c0
add esp, 0x10
mov ecx, ebx
mov dword [esp + 8], eax
imul ecx, eax
sub edi, ecx
mov ecx, eax
mul dword [esp + 0x34]
imul ecx, dword [esp + 0x44]
add edx, ecx
nop word cs:[eax + eax]
nop
cmp esi, eax
mov ecx, edi
sbb ecx, edx
jae 0x437b40
dec dword [esp + 8]
sub eax, dword [esp + 0x34]
sbb edx, dword [esp + 0x44]
add edi, ebx
jae 0x437b20
nop dword [eax + eax]
mov edi, dword [esp + 0x2c]
mov ecx, dword [esp + 0x24]
mov eax, dword [edi]
test ecx, ecx
je 0x437bf3
mov ebp, dword [ebp]
xor esi, esi
cmp ecx, 4
jb 0x437c12
mov edx, ecx
xor ebx, ebx
mov ecx, eax
nop word cs:[eax + eax]
mov dword [esp], ebp
mov ebp, dword [esp + 8]
mov dword [esp + 0x28], edx
mov edx, dword [esp]
mov eax, ebp
mul dword [edx]
mov dword [esp + 0x54], edx
mov edx, dword [esp]
mov edi, eax
lea eax, [eax + ebx]
mov dword [ecx], eax
mov eax, ebp
mul dword [edx + 4]
add edi, ebx
adc eax, dword [esp + 0x54]
mov dword [esp + 0x38], edx
mov edx, dword [esp]
mov dword [ecx + 4], eax
mov eax, ebp
setb bl
mul dword [edx + 8]
add bl, 0xff
adc eax, dword [esp + 0x38]
mov edi, edx
mov dword [ecx + 8], eax
mov eax, ebp
mov ebp, dword [esp]
setb bl
mul dword [ebp + 0xc]
add bl, 0xff
mov ebx, edx
mov edx, dword [esp + 0x28]
adc eax, edi
adc ebx, 0
mov dword [ecx + 0xc], eax
add ebp, 0x10
add ecx, 0x10
add edx, 0xfffffffc
cmp edx, 3
ja 0x437b70
mov edi, dword [esp + 0x3c]
test edi, edi
je 0x437aa5
mov eax, ecx
jmp 0x437c16
mov edx, dword [esp + 0x10]
mov dword [eax], 0
mov eax, 1
xor ecx, ecx
mov esi, dword [edi]
add edx, 0xfffffffc
mov dword [esp + 0x10], edx
jmp 0x437d04
mov edi, ecx
xor ebx, ebx
mov ecx, eax
nop dword [eax + eax]
mov eax, dword [esp + 8]
mul dword [ebp + esi*4]
add eax, ebx
adc edx, 0
mov dword [ecx + esi*4], eax
inc esi
cmp edi, esi
mov ebx, edx
jne 0x437c20
mov ebx, edx
mov ebp, dword [esp + 0x1c]
mov edx, dword [esp + 0x30]
mov esi, dword [esp + 0x2c]
mov eax, dword [esi]
mov ecx, dword [esp + 0x24]
add dword [esp + 0x10], 0xfffffffc
test edx, edx
mov dword [eax + ecx*4], ebx
je 0x437cef
mov esi, dword [esi]
xor ecx, ecx
cmp edx, 4
mov eax, edx
jb 0x437d00
mov edx, dword [esp + 0x10]
mov dword [esp], eax
xor ecx, ecx
mov eax, esi
nop word cs:[eax + eax]
nop
mov esi, dword [edx]
mov edi, dword [eax]
xor ebx, ebx
mov ebp, esi
sub ebp, ecx
sub ebp, edi
cmp esi, edi
mov esi, dword [edx + 4]
mov edi, dword [esp]
setb bl
mov dword [edx], ebp
cmove ebx, ecx
xor ecx, ecx
sub esi, dword [eax + 4]
setb cl
cmove ecx, ebx
sub esi, ebx
xor ebx, ebx
mov dword [edx + 4], esi
mov esi, dword [edx + 8]
sub esi, dword [eax + 8]
setb bl
cmove ebx, ecx
sub esi, ecx
xor ecx, ecx
mov dword [edx + 8], esi
mov esi, dword [edx + 0xc]
sub esi, dword [eax + 0xc]
setb cl
cmove ecx, ebx
sub esi, ebx
add edi, 0xfffffffc
add eax, 0x10
mov dword [edx + 0xc], esi
add edx, 0x10
cmp edi, 3
mov dword [esp], edi
ja 0x437c80
mov esi, eax
mov eax, dword [esp + 0x48]
test eax, eax
jne 0x437d04
jmp 0x437d4b
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x20]
jmp 0x437e4a
mov edx, dword [esp + 0x10]
xor edi, edi
mov dword [esp + 0x28], edx
mov dword [esp], esi
mov dword [esp + 0x38], eax
nop word cs:[eax + eax]
nop dword [eax + eax]
mov edx, dword [esp + 0x28]
mov ebx, ecx
mov ecx, dword [esp]
mov eax, dword [edx + edi*4]
mov esi, dword [ecx + edi*4]
xor ecx, ecx
mov ebp, eax
sub ebp, ebx
sub ebp, esi
cmp eax, esi
mov esi, dword [esp + 0x38]
setb cl
mov dword [edx + edi*4], ebp
cmove ecx, ebx
inc edi
cmp esi, edi
jne 0x437d20
mov ebp, dword [esp + 0x1c]
mov eax, dword [esp + 0xc]
mov edx, dword [esp + 0x20]
mov esi, dword [esp + 8]
test ecx, ecx
je 0x437e06
mov ecx, dword [esp + 0x24]
dec esi
test ecx, ecx
je 0x437e06
mov edi, dword [ebp]
cmp ecx, 4
mov eax, ecx
mov dword [esp + 8], esi
jb 0x437e0c
mov ecx, dword [esp + 0x10]
xor ebp, ebp
xor ebx, ebx
mov dword [esp], eax
nop dword [eax]
add ebx, dword [ecx]
mov esi, ebp
adc esi, 0
add ebx, dword [edi]
mov dword [ecx], ebx
adc esi, 0
xor ebx, ebx
add esi, dword [ecx + 4]
mov eax, dword [edi + 4]
mov dword [esp + 0x28], eax
lea eax, [esi + eax]
setb bl
mov dword [ecx + 4], eax
xor eax, eax
mov edx, dword [edi + 8]
add edx, dword [ecx + 8]
setb al
add esi, dword [esp + 0x28]
adc ebx, edx
mov dword [ecx + 8], ebx
setb dl
xor ebx, ebx
mov esi, dword [edi + 0xc]
add esi, dword [ecx + 0xc]
setb bl
add dl, 0xff
mov edx, dword [esp]
adc eax, esi
adc ebx, 0
mov dword [ecx + 0xc], eax
add ecx, 0x10
add edi, 0x10
add edx, 0xfffffffc
cmp edx, 3
mov dword [esp], edx
ja 0x437d90
mov eax, dword [esp + 0x3c]
test eax, eax
je 0x437ab6
mov edx, dword [esp + 0x20]
jmp 0x437e14
mov ecx, dword [esp + 0x14]
jmp 0x437e4e
mov ecx, dword [esp + 0x10]
xor ebx, ebx
xor ebp, ebp
xor esi, esi
nop word cs:[eax + eax]
add ebx, dword [ecx + esi*4]
adc ebp, 0
add ebx, dword [edi + esi*4]
mov dword [ecx + esi*4], ebx
mov ebx, ebp
adc ebx, 0
inc esi
xor ebp, ebp
cmp eax, esi
jne 0x437e20
mov ebp, dword [esp + 0x1c]
mov ecx, dword [esp + 0x14]
test ebx, ebx
je 0x437e46
inc dword [edx]
mov eax, dword [esp + 0xc]
mov esi, dword [esp + 8]
mov edi, dword [esp + 0x40]
mov dword [ecx], esi
add ecx, 0xfffffffc
add edx, 0xfffffffc
mov dword [esp + 0x14], ecx
inc edi
cmp edi, eax
mov dword [esp + 0x40], edi
jne 0x437ad0
mov eax, dword [esp + 4]
mov edi, dword [esp + 0x18]
mov ebx, dword [esp + 0x70]
mov eax, dword [eax + 4]
test eax, eax
jle 0x437ea1
mov ecx, dword [esp + 4]
mov edx, dword [ecx]
lea ecx, [eax - 1]
cmp dword [edx + eax*4 - 4], 0
mov eax, ecx
je 0x437e7a
mov eax, dword [esp + 4]
inc ecx
mov dword [eax + 4], ecx
test ebx, ebx
jne 0x437ebd
jmp 0x437f5f
mov ecx, dword [esp + 4]
mov dword [ecx + 4], eax
jne 0x437eb5
mov eax, dword [esp + 4]
mov dword [eax + 0xc], 0
test ebx, ebx
je 0x437f5f
mov eax, dword [esp + 0x74]
mov esi, dword [eax + 0xc]
push dword [esp + 0x4c]
push dword [esp + 8]
push ebx
call sym.fastboot.exe_BN_rshift
add esp, 0xc
test eax, eax
je 0x437f85
mov ebx, dword [esp + 0x70]
mov edi, dword [esp + 0x18]
mov eax, dword [ebx + 4]
test eax, eax
je 0x437f5f
mov ecx, dword [ebx]
xor edx, edx
cmp eax, 8
mov edi, 0
jb 0x437f47
mov edx, eax
lea edi, [ecx + 0x10]
pxor xmm0, xmm0
pxor xmm1, xmm1
and edx, 0xfffffff8
mov ebx, edx
movdqu xmm2, xmmword [edi - 0x10]
movdqu xmm3, xmmword [edi]
add edi, 0x20
add ebx, 0xfffffff8
por xmm0, xmm2
por xmm1, xmm3
jne 0x437f0c
por xmm1, xmm0
mov ebx, dword [esp + 0x70]
cmp eax, edx
pshufd xmm0, xmm1, 0x4e
por xmm0, xmm1
pshufd xmm1, xmm0, 0xe5
por xmm1, xmm0
movd edi, xmm1
je 0x437f54
sub eax, edx
lea ecx, [ecx + edx*4]
or edi, dword [ecx]
add ecx, 4
dec eax
jne 0x437f4c
test edi, edi
mov edi, dword [esp + 0x18]
je 0x437f5f
mov dword [ebx + 0xc], esi
mov eax, dword [edi + 4]
mov ebx, dword [esp + 0x7c]
test eax, eax
jle 0x438003
mov edx, dword [edi]
lea ecx, [eax - 1]
cmp dword [edx + eax*4 - 4], 0
mov eax, ecx
je 0x437f66
inc ecx
mov dword [edi + 4], ecx
jmp 0x43800f
mov ebx, dword [esp + 0x7c]
mov eax, dword [ebx + 0x24]
test eax, eax
je 0x437f99
dec eax
mov dword [ebx + 0x24], eax
jmp 0x4377f7
mov ecx, dword [ebx + 0x18]
mov eax, dword [ebx + 0x14]
lea edx, [ecx - 1]
mov dword [ebx + 0x18], edx
mov esi, dword [ebx + 0x20]
mov eax, dword [eax + ecx*4 - 4]
mov edx, esi
sub edx, eax
jbe 0x437ff4
mov ecx, dword [ebx + 0xc]
mov edi, ecx
sub edi, edx
test edx, edx
mov dword [ebx + 0xc], edi
je 0x437ff4
dec ecx
mov edx, eax
and ecx, 0xf
sub edx, esi
nop dword [eax + eax]
test ecx, ecx
je 0x437fe0
dec ecx
inc edx
jne 0x437fd0
jmp 0x437ff4
mov ecx, dword [ebx + 4]
mov ecx, dword [ecx + 0x140]
mov dword [ebx + 4], ecx
mov ecx, 0xf
inc edx
jne 0x437fd0
mov dword [ebx + 0x20], eax
mov dword [ebx + 0x28], 0
jmp 0x4377f7
mov dword [edi + 4], eax
jne 0x43800f
mov dword [edi + 0xc], 0
mov eax, dword [ebx + 0x24]
test eax, eax
je 0x438024
dec eax
mov dword [ebx + 0x24], eax
mov eax, 1
jmp 0x4377f9
mov ecx, dword [ebx + 0x18]
mov eax, dword [ebx + 0x14]
lea edx, [ecx - 1]
mov dword [ebx + 0x18], edx
mov esi, dword [ebx + 0x20]
mov eax, dword [eax + ecx*4 - 4]
mov edx, esi
sub edx, eax
jbe 0x438071
mov ecx, dword [ebx + 0xc]
mov edi, ecx
sub edi, edx
test edx, edx
mov dword [ebx + 0xc], edi
je 0x438071
dec ecx
mov edx, eax
and ecx, 0xf
sub edx, esi
test ecx, ecx
je 0x43805d
dec ecx
inc edx
jne 0x438053
jmp 0x438071
mov ecx, dword [ebx + 4]
mov ecx, dword [ecx + 0x140]
mov dword [ebx + 4], ecx
mov ecx, 0xf
inc edx
jne 0x438053
mov dword [ebx + 0x20], eax
mov dword [ebx + 0x28], 0
mov eax, 1
jmp 0x4377f9