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

Disassembly:
mov ecx, dword fs:[0x14]
mov ecx, dword [ecx]
cmp esp, dword [ecx + 8]
jbe 0x504137
sub esp, 0x64
mov eax, dword [esp + 0x68]
cmp eax, 8
jg 0x5040f9
cmp eax, 4
jg 0x5040cd
lea ecx, [eax - 1]
cmp ecx, 1
jbe 0x504099
cmp eax, 3
jne 0x50406c
mov ecx, 3
cmp ecx, 0x14
jae 0x504065
mov edx, dword [0x788d14]
mov ebx, dword [0x788d10]
cmp ecx, edx
jae 0x504130
mov edx, dword [ebx + ecx*4]
test edx, edx
setne dl
test dl, dl
je 0x504047
mov dword [esp + 0x2c], ecx
mov dword [esp], ecx
call dbg.crypto.Hash.New
mov eax, dword [esp + 8]
mov dword [esp + 0x50], eax
mov ecx, dword [esp + 4]
mov dword [esp + 0x4c], ecx
mov edx, dword [ecx + 0x24]
mov ebx, dword [esp + 0x6c]
mov dword [esp + 4], ebx
mov ebx, dword [esp + 0x70]
mov dword [esp + 8], ebx
mov ebx, dword [esp + 0x74]
mov dword [esp + 0xc], ebx
mov dword [esp], eax
call edx
mov eax, dword [esp + 0x4c]
mov eax, dword [eax + 0x20]
mov dword [esp + 4], 0
mov dword [esp + 8], 0
mov dword [esp + 0xc], 0
mov ecx, dword [esp + 0x50]
mov dword [esp], ecx
call eax
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x18]
mov ebx, dword [esp + 0x84]
test ebx, ebx
je 0x503b87
mov dword [esp + 0x30], eax
mov dword [esp + 0x5c], ecx
mov dword [esp + 0x34], edx
mov ebp, dword [ebx + 8]
cmp ebp, 0x2fd00e80
jne 0x503a77
lea esi, [0x62b800]
cmp esi, ebx
jne 0x50403d
mov esi, dword [esp + 0x88]
je 0x503dfb
cmp ebp, 0x6a2fd0b3
jne 0x503a9a
lea esi, [0x5ebbe0]
cmp esi, ebx
jne 0x503df1
mov esi, dword [esp + 0x88]
je 0x503baf
cmp ebp, 0xcc456746
jne 0x503b87
lea ebp, [0x5ebda0]
cmp ebp, ebx
jne 0x503ba5
mov ebx, dword [esp + 0x88]
jne 0x503b87
mov ebp, dword [esp + 0x68]
add ebp, 0xfffffff3
cmp ebp, 2
ja 0x503b36
mov dword [esp + 0x40], 0
mov dword [esp + 0x3c], 0xffffffff
mov dword [esp], ebx
mov ebx, dword [esp + 0x2c]
mov dword [esp + 4], ebx
mov dword [esp + 8], ecx
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], edx
mov eax, dword [esp + 0x78]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x7c]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x80]
mov dword [esp + 0x1c], eax
lea eax, [esp + 0x3c]
mov dword [esp + 0x20], eax
call dbg.crypto/rsa.VerifyPSS
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x8c], ecx
mov dword [esp + 0x90], eax
add esp, 0x64
ret
mov dword [esp], ebx
mov ebx, dword [esp + 0x2c]
mov dword [esp + 4], ebx
mov dword [esp + 8], ecx
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], edx
mov eax, dword [esp + 0x78]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x7c]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x80]
mov dword [esp + 0x1c], eax
call dbg.crypto/rsa.VerifyPKCS1v15
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x8c], ecx
mov dword [esp + 0x90], eax
add esp, 0x64
ret
mov eax, dword [0x7888a4]
mov ecx, dword [0x7888a0]
mov dword [esp + 0x8c], ecx
mov dword [esp + 0x90], eax
add esp, 0x64
ret
mov ebx, 0
jmp 0x503abb
mov dword [esp + 0x48], esi
lea eax, [0x615100]
mov dword [esp], eax
call dbg.runtime.newobject
mov eax, dword [esp + 4]
mov dword [esp + 0x58], eax
mov ecx, dword [esp + 0x78]
mov dword [esp], ecx
mov ecx, dword [esp + 0x7c]
mov dword [esp + 4], ecx
mov ecx, dword [esp + 0x80]
mov dword [esp + 8], ecx
lea ecx, [0x5ec660]
mov dword [esp + 0xc], ecx
mov dword [esp + 0x10], eax
call dbg.encoding/asn1.Unmarshal
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x18]
test ecx, ecx
jne 0x503ddf
test edx, edx
jne 0x503d80
mov eax, dword [esp + 0x58]
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
test edx, edx
jne 0x503d65
xor edx, edx
test edx, edx
jg 0x503c88
lea eax, [0x60f6c0]
mov dword [esp], eax
call dbg.runtime.newobject
mov eax, dword [esp + 4]
mov dword [eax + 4], 0x35
mov ecx, dword [0x79b700]
test ecx, ecx
jne 0x503c6c
lea ecx, [0x654abe]
mov dword [eax], ecx
lea ecx, [0x757cf0]
mov dword [esp + 0x8c], ecx
mov dword [esp + 0x90], eax
add esp, 0x64
ret
mov dword [esp + 0x60], eax
mov dword [esp], eax
lea ecx, [0x654abe]
mov dword [esp + 4], ecx
call dbg.runtime.writebarrierptr
mov eax, dword [esp + 0x60]
jmp 0x503c54
mov eax, dword [eax + 4]
mov edx, dword [eax + 8]
test edx, edx
jne 0x503d4a
xor edx, edx
test edx, edx
jle 0x503c29
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x48]
mov dword [esp], eax
mov eax, dword [esp + 0x5c]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x30]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x34]
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], ecx
call dbg.crypto/dsa.Verify
movzx eax, byte [esp + 0x18]
test al, al
jne 0x503d30
lea eax, [0x60f6c0]
mov dword [esp], eax
call dbg.runtime.newobject
mov eax, dword [esp + 4]
mov dword [eax + 4], 0x1e
mov ecx, dword [0x79b700]
test ecx, ecx
jne 0x503d14
lea ecx, [0x64ef66]
mov dword [eax], ecx
lea ecx, [0x757cf0]
mov dword [esp + 0x8c], ecx
mov dword [esp + 0x90], eax
add esp, 0x64
ret
mov dword [esp + 0x60], eax
mov dword [esp], eax
lea ecx, [0x64ef66]
mov dword [esp + 4], ecx
call dbg.runtime.writebarrierptr
mov eax, dword [esp + 0x60]
jmp 0x503cfc
mov dword [esp + 0x8c], 0
mov dword [esp + 0x90], 0
add esp, 0x64
ret
movzx edx, byte [eax]
test dl, dl
je 0x503d5b
mov edx, 0xffffffff
jmp 0x503c98
mov edx, 1
jmp 0x503c98
movzx edx, byte [ecx]
test dl, dl
je 0x503d76
mov edx, 0xffffffff
jmp 0x503c25
mov edx, 1
jmp 0x503c25
lea eax, [0x60f6c0]
mov dword [esp], eax
call dbg.runtime.newobject
mov eax, dword [esp + 4]
mov dword [eax + 4], 0x27
mov ecx, dword [0x79b700]
test ecx, ecx
jne 0x503dc3
lea ecx, [0x651a51]
mov dword [eax], ecx
lea ecx, [0x757cf0]
mov dword [esp + 0x8c], ecx
mov dword [esp + 0x90], eax
add esp, 0x64
ret
mov dword [esp + 0x60], eax
mov dword [esp], eax
lea ecx, [0x651a51]
mov dword [esp + 4], ecx
call dbg.runtime.writebarrierptr
mov eax, dword [esp + 0x60]
jmp 0x503dab
mov dword [esp + 0x8c], ecx
mov dword [esp + 0x90], eax
add esp, 0x64
ret
mov esi, 0
jmp 0x503a94
mov dword [esp + 0x44], esi
lea eax, [0x615160]
mov dword [esp], eax
call dbg.runtime.newobject
mov eax, dword [esp + 4]
mov dword [esp + 0x54], eax
mov ecx, dword [esp + 0x78]
mov dword [esp], ecx
mov ecx, dword [esp + 0x7c]
mov dword [esp + 4], ecx
mov ecx, dword [esp + 0x80]
mov dword [esp + 8], ecx
lea ecx, [0x5ec6a0]
mov dword [esp + 0xc], ecx
mov dword [esp + 0x10], eax
call dbg.encoding/asn1.Unmarshal
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x20]
test edx, edx
jne 0x50402b
test eax, eax
jne 0x503fcc
mov eax, dword [esp + 0x54]
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
test edx, edx
jne 0x503fb1
xor edx, edx
test edx, edx
jg 0x503ed4
lea eax, [0x60f6c0]
mov dword [esp], eax
call dbg.runtime.newobject
mov eax, dword [esp + 4]
mov dword [eax + 4], 0x37
mov ecx, dword [0x79b700]
test ecx, ecx
jne 0x503eb8
lea ecx, [0x65522b]
mov dword [eax], ecx
lea ecx, [0x757cf0]
mov dword [esp + 0x8c], ecx
mov dword [esp + 0x90], eax
add esp, 0x64
ret
mov dword [esp + 0x60], eax
mov dword [esp], eax
lea ecx, [0x65522b]
mov dword [esp + 4], ecx
call dbg.runtime.writebarrierptr
mov eax, dword [esp + 0x60]
jmp 0x503ea0
mov eax, dword [eax + 4]
mov edx, dword [eax + 8]
test edx, edx
jne 0x503f96
xor edx, edx
test edx, edx
jle 0x503e75
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x44]
mov dword [esp], eax
mov eax, dword [esp + 0x5c]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x30]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x34]
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], ecx
call dbg.crypto/ecdsa.Verify
movzx eax, byte [esp + 0x18]
test al, al
jne 0x503f7c
lea eax, [0x60f6c0]
mov dword [esp], eax
call dbg.runtime.newobject
mov eax, dword [esp + 4]
mov dword [eax + 4], 0x20
mov ecx, dword [0x79b700]
test ecx, ecx
jne 0x503f60
lea ecx, [0x64f97e]
mov dword [eax], ecx
lea ecx, [0x757cf0]
mov dword [esp + 0x8c], ecx
mov dword [esp + 0x90], eax
add esp, 0x64
ret
mov dword [esp + 0x60], eax
mov dword [esp], eax
lea ecx, [0x64f97e]
mov dword [esp + 4], ecx
call dbg.runtime.writebarrierptr
mov eax, dword [esp + 0x60]
jmp 0x503f48
mov dword [esp + 0x8c], 0
mov dword [esp + 0x90], 0
add esp, 0x64
ret
movzx edx, byte [eax]
test dl, dl
je 0x503fa7
mov edx, 0xffffffff
jmp 0x503ee4
mov edx, 1
jmp 0x503ee4
movzx edx, byte [ecx]
test dl, dl
je 0x503fc2
mov edx, 0xffffffff
jmp 0x503e71
mov edx, 1
jmp 0x503e71
lea eax, [0x60f6c0]
mov dword [esp], eax
call dbg.runtime.newobject
mov eax, dword [esp + 4]
mov dword [eax + 4], 0x29
mov ecx, dword [0x79b700]
test ecx, ecx
jne 0x50400f
lea ecx, [0x65246e]
mov dword [eax], ecx
lea ecx, [0x757cf0]
mov dword [esp + 0x8c], ecx
mov dword [esp + 0x90], eax
add esp, 0x64
ret
mov dword [esp + 0x60], eax
mov dword [esp], eax
lea ecx, [0x65246e]
mov dword [esp + 4], ecx
call dbg.runtime.writebarrierptr
mov eax, dword [esp + 0x60]
jmp 0x503ff7
mov dword [esp + 0x8c], edx
mov dword [esp + 0x90], ecx
add esp, 0x64
ret
mov esi, 0
jmp 0x503a71
mov eax, dword [0x7888a0]
mov ecx, dword [0x7888a4]
mov dword [esp + 0x8c], eax
mov dword [esp + 0x90], ecx
add esp, 0x64
ret
xor edx, edx
jmp 0x5039be
cmp eax, 4
jne 0x50407b
mov ecx, 5
jmp 0x503999
mov eax, dword [0x7888a4]
mov ecx, dword [0x7888a0]
mov dword [esp + 0x8c], ecx
mov dword [esp + 0x90], eax
add esp, 0x64
ret
mov dword [esp + 0x38], eax
lea eax, [0x758490]
mov dword [esp], eax
lea eax, [esp + 0x38]
mov dword [esp + 4], eax
call dbg.runtime.convT2I32
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 8]
mov dword [esp + 0x8c], ecx
mov dword [esp + 0x90], eax
add esp, 0x64
ret
cmp eax, 6
jg 0x5040eb
cmp eax, 5
jne 0x5040e1
mov ecx, 6
jmp 0x503999
mov ecx, 7
jmp 0x503999
cmp eax, 7
je 0x503994
jmp 0x504071
cmp eax, 0xb
jg 0x504112
cmp eax, 9
je 0x503994
cmp eax, 0xa
je 0x504071
jmp 0x5040d7
cmp eax, 0xd
jg 0x504121
cmp eax, 0xc
je 0x5040e1
jmp 0x504071
cmp eax, 0xe
je 0x5040d7
cmp eax, 0xf
je 0x5040e1
jmp 0x50407b
call dbg.runtime.panicindex
ud2
call dbg.runtime.morestack_noctxt
jmp dbg.crypto/x509.checkSignature