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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x466592
mov eax, dword fs:[0]
push eax
sub esp, 0x348
mov eax, dword [0x478ec8]
xor eax, esp
mov dword [esp + 0x340], eax
push ebx
push esi
push edi
mov eax, dword [0x478ec8]
xor eax, esp
push eax
lea eax, [esp + 0x358]
mov dword fs:[0], eax
mov edi, dword [ebp + 8]
mov eax, dword [ebp + 0x10]
xor esi, esi
cmp dword [ebp + 0x14], esi
mov dword [eax], esi
mov dword [edx], esi
mov dword [esp + 0x38], eax
mov dword [esp + 0x74], ecx
mov dword [esp + 0x58], edx
mov dword [ecx], esi
je 0x41557a
mov ecx, edi
call fcn.00417580
test eax, eax
je 0x4155c8
mov dword [esp + 0x140], esi
mov dword [esp + 0x144], esi
mov dword [esp + 0x148], esi
lea eax, [esp + 0xc4]
push eax
push ecx
mov dword [esp + 0x368], esi
call fcn.004016c0
mov ecx, eax
add esp, 4
mov eax, edi
call fcn.00401ff0
test eax, eax
jne 0x4155cf
mov eax, dword [esp + 0x140]
cmp eax, esi
je 0x4155c8
push eax
call fcn.00440ac8
add esp, 4
xor eax, eax
jmp 0x415d07
mov eax, dword [esp + 0x12c]
mov edx, dword [esp + 0x130]
movzx esi, byte [ebp + 0xc]
mov cl, 9
call fcn.00462a60
mov edi, eax
mov ebx, edx
mov eax, 1
xor edx, edx
mov ecx, esi
call fcn.00462a40
add edi, eax
adc ebx, edx
add edi, 0xffffffff
adc ebx, 0xffffffff
mov eax, edi
mov edx, ebx
mov ecx, esi
call fcn.00457b70
mov ecx, dword [esp + 0x74]
mov edx, dword [esp + 0x58]
lea esi, [eax - 1]
shr esi, 3
add esi, 1
mov dword [ecx], eax
push esi
mov dword [esp + 0xa8], eax
mov dword [edx], esi
call fcn.0042ff51
mov ecx, dword [esp + 0x3c]
add esp, 4
push esi
push 0xff
push eax
mov dword [ecx], eax
call fcn.00441070
xor edi, edi
add esp, 0xc
mov dword [esp + 0x40], edi
mov dword [esp + 0x44], edi
mov dword [esp + 0x48], edi
mov byte [esp + 0x360], 1
mov esi, dword [esp + 0x140]
mov eax, dword [esp + 0x144]
cmp esi, eax
jbe 0x41567d
call fcn.00441c3e
mov eax, dword [esp + 0x144]
mov ebx, esi
cmp dword [esp + 0x140], eax
mov dword [esp + 0x70], ebx
mov esi, eax
jbe 0x41569a
call fcn.00441c3e
mov eax, dword [esp + 0x144]
cmp ebx, esi
je 0x415c86
cmp ebx, eax
jb 0x4156ab
call fcn.00441c3e
mov edx, dword [0x47aaac]
mov eax, dword [edx + 0xc]
mov ecx, 0x47aaac
call eax
add eax, 0x10
mov dword [esp + 0x10], eax
lea esi, [ebx + 8]
mov byte [esp + 0x360], 2
mov al, byte [esi]
test al, al
mov dword [esp + 0x98], esi
jne 0x4156ea
lea ecx, [ebx + 0x10]
push ecx
push 0x46fd4c
lea edx, [esp + 0x18]
push edx
jmp 0x4156f8
movsx eax, al
push eax
push 0x46fd68
lea ecx, [esp + 0x18]
push ecx
call fcn.00416580
xor eax, eax
add esp, 0xc
mov dword [esp + 0x30], edi
mov edi, vtable.RDDevice.0
push 0x200
mov dword [esp + 0x20], edi
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], 0xffffffff
mov dword [esp + 0x30], eax
call fcn.0042ff51
add esp, 4
push 0x46fc50
push eax
mov dword [esp + 0x30], eax
call dword [sym.imp.KERNEL32.dll_lstrcpyW]
cmp dword [ebp + 0x14], 0
mov byte [esp + 0x360], 3
je 0x4157ad
cmp byte [esi], 0
jne 0x41576e
mov byte [esp + 0x360], 2
lea esi, [esp + 0x1c]
mov dword [esp + 0x1c], edi
call fcn.0040fce0
mov edx, dword [esp + 0x28]
push edx
jmp 0x415c31
call fcn.00417230
movzx ecx, byte [esi]
push ecx
call fcn.00417160
add esp, 4
push 0x31
lea ecx, [esp + 0x20]
call fcn.0040fae0
test eax, eax
jne 0x4157bc
mov byte [esp + 0x360], 2
lea esi, [esp + 0x1c]
mov dword [esp + 0x1c], edi
call fcn.0040fce0
mov edx, dword [esp + 0x28]
push edx
jmp 0x415c31
lea ecx, [esp + 0x1c]
add ebx, 0x10
push ecx
call fcn.0040f850
jmp 0x41578a
lea edi, [esp + 0x17]
lea ecx, [esp + 0x1c]
call fcn.00415290
test eax, eax
jne 0x415814
mov byte [esp + 0x360], 2
lea esi, [esp + 0x1c]
mov dword [esp + 0x1c], vtable.RDDevice.0
call fcn.0040fce0
mov ecx, dword [esp + 0x28]
push ecx
call fcn.004410ea
mov byte [esp + 0x364], 1
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
add esp, 4
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jmp 0x415c55
lea ecx, [esp + 0x78]
push ecx
lea edx, [esp + 0x34]
push edx
lea eax, [esp + 0x24]
call fcn.00415300
add esp, 8
test eax, eax
lea esi, [esp + 0x1c]
je 0x415c17
lea ecx, [esp + 0x14c]
push ecx
push 0
push 0
push 0
mov ecx, 1
call fcn.0040ff80
test eax, eax
je 0x41586b
lea edx, [esp + 0x14c]
push edx
lea eax, [esp + 0x50]
push eax
call fcn.004150e0
add esp, 8
test eax, eax
jne 0x41589b
mov ecx, dword [esp + 0x30]
push ecx
call fcn.004410ea
mov byte [esp + 0x364], 2
add esp, 4
lea esi, [esp + 0x1c]
mov dword [esp + 0x1c], vtable.RDDevice.0
call fcn.0040fce0
mov edx, dword [esp + 0x28]
push edx
jmp 0x415c31
mov esi, dword [esp + 0x70]
mov eax, dword [esi + 0x50]
mov edx, dword [esi + 0x54]
mov cl, 9
call fcn.00462a60
mov ebx, eax
add ebx, dword [esp + 0x4c]
mov eax, dword [esi + 0x58]
adc edx, dword [esp + 0x50]
mov cl, 9
mov dword [esp + 0x60], edx
mov edx, dword [esi + 0x5c]
mov dword [esp + 0x5c], ebx
call fcn.00462a60
mov ecx, dword [ebp + 0xc]
mov edi, eax
sub edi, dword [esp + 0x4c]
mov eax, 1
sbb edx, dword [esp + 0x50]
shl eax, cl
mov dword [esp + 0xb8], edx
xor edx, edx
add eax, 0xffffffff
add eax, ebx
adc edx, dword [esp + 0x60]
call fcn.00457b70
mov edx, dword [esp + 0xb8]
mov ecx, dword [ebp + 0xc]
mov dword [esp + 0x18], eax
mov eax, edi
add eax, ebx
adc edx, dword [esp + 0x60]
call fcn.00457b70
mov edi, eax
mov eax, dword [esp + 0x18]
sub edi, eax
cmp byte [esi + 0x60], 7
jne 0x41593a
mov ecx, dword [esp + 0x4c]
or ecx, dword [esp + 0x50]
jne 0x41593a
lea ecx, [esp + 0x1c]
push ecx
call fcn.004153c0
mov eax, dword [esp + 0x1c]
add esp, 4
lea edi, [edi + eax - 1]
cmp eax, edi
mov dword [esp + 0x18], 0
mov dword [esp + 0x34], eax
mov dword [esp + 0x78], edi
jae 0x415af9
jmp 0x415968
mov ebx, dword [esp + 0x5c]
mov eax, dword [esp + 0x34]
cmp eax, dword [esp + 0xa4]
jae 0x415af9
mov ecx, dword [ebp + 0xc]
xor edx, edx
call fcn.00462a40
mov ecx, dword [ebp + 0xc]
mov esi, eax
mov edi, edx
sub esi, ebx
sbb edi, dword [esp + 0x60]
mov eax, 1
xor edx, edx
call fcn.00462a40
mov ebx, eax
movzx eax, byte [esp + 0x17]
mov dword [esp + 0xb0], edx
cdq
push edx
push eax
push edi
push esi
mov dword [esp + 0xac], eax
mov dword [esp + 0xb0], edx
call fcn.00450bf0
mov ecx, dword [esp + 0x9c]
mov dword [esp + 0x7c], eax
mov eax, dword [esp + 0xb0]
mov dword [esp + 0x80], edx
mov edx, dword [esp + 0xa0]
add ebx, esi
adc eax, edi
push edx
sub ebx, 1
push ecx
sbb eax, 0
push eax
push ebx
call fcn.00450bf0
mov edi, dword [esp + 0x7c]
mov ecx, dword [esp + 0x80]
sub eax, edi
sbb edx, ecx
add eax, 1
adc edx, 0
add eax, edi
adc edx, ecx
cmp ecx, edx
mov esi, ecx
mov dword [esp + 0x8c], eax
mov dword [esp + 0x90], edx
jg 0x415ab3
jl 0x415a2c
cmp edi, eax
jae 0x415ab3
mov eax, dword [esp + 0x30]
mov edx, dword [eax + 0xc]
mov eax, dword [eax + 8]
push 0
push 8
push edx
push eax
call fcn.00450bf0
mov dword [esp + 0x84], eax
mov dword [esp + 0x88], edx
push 0
push 8
push esi
push edi
call fcn.00450bf0
cmp edx, dword [esp + 0x88]
mov ebx, eax
jg 0x415ae0
jl 0x415a70
cmp ebx, dword [esp + 0x84]
jae 0x415ae0
push 0
push 8
push esi
push edi
call fcn.00450ca0
mov ecx, eax
mov dl, 1
shl dl, cl
mov ecx, dword [esp + 0x30]
test byte [ebx + ecx + 0x10], dl
jne 0x415ae0
push esi
push edi
call fcn.00415490
add esp, 8
test eax, eax
je 0x415ae0
add edi, 1
adc esi, 0
cmp esi, dword [esp + 0x90]
jl 0x415a4f
jg 0x415ab3
cmp edi, dword [esp + 0x8c]
jb 0x415a4f
mov esi, dword [esp + 0x34]
mov eax, dword [esp + 0x38]
mov ecx, dword [eax]
add dword [esp + 0x18], 1
mov edx, esi
shr edx, 3
lea eax, [edx + ecx]
mov edx, esi
and edx, 7
mov ecx, 7
sub ecx, edx
mov dl, 1
shl dl, cl
not dl
and byte [eax], dl
jmp 0x415ae4
mov esi, dword [esp + 0x34]
add esi, 1
cmp esi, dword [esp + 0x78]
mov dword [esp + 0x34], esi
mov esi, dword [esp + 0x70]
jb 0x415960
mov eax, dword [esp + 0x30]
push eax
call fcn.004410ea
mov ecx, dword [ebp + 0xc]
mov eax, dword [esp + 0x1c]
add esp, 4
add ecx, 9
xor edx, edx
call fcn.00462a40
mov edi, dword [esp + 0x98]
cmp byte [edi], 0
push edx
push eax
jne 0x415b77
lea ecx, [esp + 0xb0]
push ecx
call fcn.00417d80
add esp, 0xc
mov byte [esp + 0x360], 4
mov edx, dword [eax]
push edx
add esi, 0x10
push esi
lea eax, [esp + 0x18]
push 0x46fd84
push eax
call fcn.00416580
mov byte [esp + 0x370], 3
mov eax, dword [esp + 0xb8]
add eax, 0xfffffff0
add esp, 0x10
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jmp 0x415bc1
lea ecx, [esp + 0x70]
push ecx
call fcn.00417d80
add esp, 0xc
mov byte [esp + 0x360], 5
mov edx, dword [eax]
movsx eax, byte [edi]
push edx
push eax
lea ecx, [esp + 0x18]
push str._c:_
push ecx
call fcn.00416580
mov byte [esp + 0x370], 3
mov eax, dword [esp + 0x78]
add eax, 0xfffffff0
add esp, 0x10
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x415bcd
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov esi, dword [esp + 0x40]
test esi, esi
mov edx, dword [esp + 0x44]
je 0x415bf4
mov ecx, dword [esp + 0x48]
mov eax, edx
sub eax, esi
sub ecx, esi
cmp eax, ecx
jae 0x415bf4
mov cl, byte [edi]
mov byte [edx], cl
add edx, 1
mov dword [esp + 0x44], edx
jmp 0x415c13
cmp esi, edx
mov ebx, edx
jbe 0x415bff
call fcn.00441c3e
push ebx
lea eax, [esp + 0x40]
push eax
push edi
lea edx, [esp + 0xc8]
push edx
call fcn.00415dc0
lea esi, [esp + 0x1c]
mov byte [esp + 0x360], 2
mov dword [esp + 0x1c], vtable.RDDevice.0
call fcn.0040fce0
mov eax, dword [esp + 0x28]
push eax
call fcn.004410ea
mov byte [esp + 0x364], 1
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
or edx, 0xffffffff
lea ecx, [eax + 0xc]
add esp, 4
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x415c61
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x144]
mov ebx, dword [esp + 0x70]
cmp ebx, eax
jb 0x415c7c
call fcn.00441c3e
mov eax, dword [esp + 0x144]
add ebx, 0x68
xor edi, edi
jmp 0x41567f
cmp dword [ebp + 0x14], edi
je 0x415c90
call fcn.00417230
mov eax, dword [esp + 0x40]
cmp eax, edi
je 0x415ca0
mov ecx, dword [esp + 0x44]
sub ecx, eax
jne 0x415cbd
mov esi, dword [esp + 0x38]
mov edx, dword [esi]
push edx
call fcn.004410ea
mov eax, dword [esp + 0x5c]
mov ecx, dword [esp + 0x78]
mov dword [esi], edi
mov dword [eax], edi
add esp, 4
mov dword [ecx], edi
mov ecx, dword [esp + 0x40]
cmp ecx, edi
jne 0x415cc9
xor eax, eax
jmp 0x415ccf
mov eax, dword [esp + 0x44]
sub eax, ecx
xor edx, edx
cmp eax, edi
setne dl
cmp ecx, edi
mov esi, edx
je 0x415ce5
push ecx
call fcn.00440ac8
add esp, 4
mov eax, dword [esp + 0x140]
cmp eax, edi
mov dword [esp + 0x40], edi
mov dword [esp + 0x44], edi
mov dword [esp + 0x48], edi
je 0x415d05
push eax
call fcn.00440ac8
add esp, 4
mov eax, esi
mov ecx, dword [esp + 0x358]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x340]
xor ecx, esp
call fcn.00440e94
mov esp, ebp
pop ebp
ret