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

Disassembly:
sub esp, 0x28
push ebx
push ebp
mov ebp, dword [esp + 0x38]
push esi
push edi
cmp byte [ebp + 6], 0
jge 0x44659f
cmp byte [ebp + 7], 0
mov dword [esp + 0x2c], 0
je 0x4465a7
mov dword [esp + 0x2c], 1
mov esi, dword [esp + 0x3c]
push 0xef
push ebp
push esi
call fcn.0044d4a0
mov ecx, dword [esi + 0x48]
mov edi, 0xef
btr edi, eax
mov dword [esp + 0x20], eax
movzx eax, word [ebp]
add esp, 0xc
movzx ebx, byte [ecx + eax*8 + 6]
test bl, bl
jns 0x4465e3
push edi
push eax
push esi
call fcn.0044d3c0
add esp, 0xc
mov ebx, eax
mov ecx, dword [esi + 0x60]
mov edx, 0x80
btr ecx, ebx
mov dword [esp + 0x20], edx
mov dword [esi + 0x60], ecx
movzx ecx, word [ebp + 2]
mov eax, ecx
mov dword [esp + 0x18], 0x80
mov dword [esp + 0x24], eax
mov edx, ecx
mov eax, dword [esi + 0x48]
mov dword [esp + 0x1c], edx
lea ebp, [eax + edx*8]
mov edx, 0x8000
mov al, byte [ebp + 4]
mov dword [esp + 0x28], ebp
mov byte [esp + 0x40], al
cmp cx, dx
jb 0x446699
movzx edx, byte [ebp + 6]
btr edi, ebx
mov cl, al
mov dword [esp + 0x18], edx
and cl, 0x1f
mov byte [esp + 0x3c], cl
test dl, dl
jns 0x446661
cmp cl, 0xe
mov edx, 0xff00
mov eax, edi
cmove eax, edx
push eax
push dword [esp + 0x20]
push esi
call fcn.0044d3c0
mov edx, eax
add esp, 0xc
mov dword [esp + 0x18], edx
mov ecx, dword [esi + 0x60]
btr ecx, edx
cmp byte [esp + 0x3c], 4
mov dword [esi + 0x60], ecx
je 0x446699
mov eax, dword [esi + 0x58]
btr edi, edx
and eax, edi
jne 0x446689
push edi
push esi
call fcn.0044d720
add esp, 8
mov edx, eax
jmp 0x44668c
bsr edx, eax
mov eax, dword [esi + 0x5c]
bts eax, edx
mov dword [esp + 0x20], edx
mov dword [esi + 0x5c], eax
cmp dword [esp + 0x44], 9
mov edx, dword [esi + 0x40]
mov dword [esp + 0x30], edx
jne 0x4466b7
push 4
push esi
call fcn.00445b00
add esp, 8
jmp 0x446747
cmp dword [esp + 0x2c], 0
je 0x446747
mov edi, dword [esi + 0x4c]
sub edi, 0x118
jne 0x446734
mov ecx, dword [esi + 0x78]
mov eax, dword [esi + 0x48]
cmp byte [eax + ecx*8 + 5], 0x10
lea eax, [eax + ecx*8]
mov dword [esp + 0x3c], eax
je 0x446734
mov ecx, dword [esi + 0xb4]
mov eax, dword [esi + 0x78]
inc eax
cmp eax, dword [ecx + 8]
jae 0x4466fa
mov eax, dword [esp + 0x3c]
cmp byte [eax + 0xd], 0x10
je 0x446734
mov cl, byte [edx]
cmp cl, 0xf
jne 0x44670a
mov al, byte [edx + 1]
and al, 0xf0
cmp al, 0x80
je 0x446734
and cl, 0xf0
cmp cl, 0x70
je 0x446734
mov cl, byte [esp + 0x14]
and cl, 7
mov al, cl
shl cl, 3
sub al, 0x40
add al, cl
mov byte [edx - 1], al
lea eax, [edx - 2]
mov dword [edx - 5], 0x330000fe
mov dword [esi + 0x40], eax
jmp 0x446747
mov al, byte [esp + 0x14]
lea ecx, [edx - 5]
and al, 7
mov dword [edx - 4], edi
sub al, 0x48
mov byte [ecx], al
mov dword [esi + 0x40], ecx
mov ecx, dword [esp + 0x14]
mov ah, cl
mov edx, dword [esi + 0x40]
and ah, 7
mov al, ah
mov byte [esp + 0x11], ah
shl al, 3
add ah, al
mov dword [esp + 0x2c], edx
mov edi, dword [esp + 0x2c]
mov al, ah
sub al, 0x40
mov word [edx - 2], 0x75
mov byte [edx - 3], al
mov byte [esp + 0x12], ah
mov byte [esp + 0x13], al
mov eax, ecx
and eax, 0x80
mov dword [edx - 7], 0x850000fe
mov edx, ecx
mov dword [esp + 0x34], eax
jne 0x4467a7
add edi, 0xfffffffb
mov eax, ecx
and al, 7
mov byte [edi], 0x10
cmp al, 4
jne 0x4467a3
dec edi
mov byte [edi], 0x24
mov ah, 0x40
jmp 0x4467b7
add edi, 0xfffffff8
mov edx, 5
xor ah, ah
mov dword [edi], 0x10
mov al, byte [esp + 0x11]
and dl, 7
shl al, 3
add dl, al
mov byte [esp + 0x3c], al
add dl, ah
cmp dword [esp + 0x44], 8
mov byte [edi - 1], dl
lea edx, [edi - 2]
mov dword [edi - 5], 0x8b0000fe
mov dword [esp + 0x1c], edx
mov dword [esi + 0x40], edx
jne 0x4467f9
push 4
push esi
call fcn.00445b00
mov ecx, dword [esp + 0x1c]
add esp, 8
mov edx, dword [esp + 0x1c]
jmp 0x446810
mov eax, dword [esp + 0x30]
sub al, dl
mov byte [edx - 2], 0x74
mov byte [edx - 1], al
lea eax, [edx - 2]
mov dword [esi + 0x40], eax
mov dword [esp + 0x1c], edx
mov al, byte [esp + 0x40]
and al, 0x1f
mov byte [esp + 0x40], al
cmp al, 0xe
jne 0x4468d6
mov eax, 0x8000
cmp word [esp + 0x24], ax
jae 0x446877
mov edi, ebp
push dword [edi + 8]
push 8
push ecx
push 0x838107
push esi
call fcn.0044c110
mov eax, dword [esi + 0x40]
mov ecx, dword [esp + 0x30]
sub cl, al
mov byte [eax - 2], 0x75
mov byte [eax - 1], cl
add eax, 0xfffffffe
mov dword [esi + 0x40], eax
push dword [edi + 0xc]
push 0xc
push dword [esp + 0x30]
push 0x838107
push esi
call fcn.0044c110
mov al, byte [esp + 0x68]
add esp, 0x28
jmp 0x446988
mov ecx, dword [esi + 0x40]
sub dl, cl
mov ebp, dword [esp + 0x18]
push 8
push dword [esp + 0x18]
lea eax, [ecx - 2]
mov byte [ecx - 1], dl
push ebp
push 0x2e0f66fc
mov byte [eax], 0x7a
push esi
mov dword [esi + 0x40], eax
call fcn.0044c580
mov eax, dword [esi + 0x40]
mov ecx, dword [esp + 0x30]
push 0xc
push dword [esp + 0x2c]
sub cl, al
mov byte [eax - 2], 0x73
mov byte [eax - 1], cl
add eax, 0xfffffffd
push 7
push 0x830000fe
mov dword [esi + 0x40], eax
push esi
mov byte [eax], 0xf2
call fcn.0044c580
mov al, byte [esp + 0x68]
add esp, 0x28
jmp 0x446984
cmp al, 2
jbe 0x446929
mov eax, 0x8000
cmp word [esp + 0x24], ax
jae 0x4468f9
push dword [ebp]
push 8
push ecx
push 0x838107
push esi
call fcn.0044c110
jmp 0x44690c
mov ebp, dword [esp + 0x18]
push 8
push ecx
push ebp
push 0x3b0000fe
push esi
call fcn.0044c580
mov eax, dword [esi + 0x40]
add esp, 0x14
mov ecx, dword [esp + 0x1c]
sub cl, al
mov byte [eax - 2], 0x75
mov byte [eax - 1], cl
add eax, 0xfffffffe
mov dword [esi + 0x40], eax
mov al, byte [esp + 0x40]
dec dword [esi + 0x40]
mov cl, al
cmp dword [esp + 0x34], 0
not cl
mov edx, dword [esi + 0x40]
mov byte [edx], cl
mov ecx, dword [esp + 0x14]
mov edx, dword [esi + 0x40]
mov dword [esp + 0x44], ecx
jne 0x44695f
dec edx
and cl, 7
mov byte [edx], 0xc
cmp cl, 4
jne 0x446957
dec edx
mov byte [edx], 0x24
mov ecx, dword [esp + 0x44]
mov ah, 0x78
jmp 0x44696f
add edx, 0xfffffffc
mov ecx, 5
mov ah, 0x38
mov dword [edx], 0xc
and cl, 7
add cl, ah
mov byte [edx - 1], cl
lea ecx, [edx - 2]
mov dword [edx - 5], 0x830000fe
mov dword [esi + 0x40], ecx
mov edi, dword [esp + 0x28]
mov edx, dword [esp + 0x2c]
mov cl, byte [esi + 0x40]
sub cl, dl
mov byte [edx - 1], cl
mov edx, dword [esi + 0x40]
cmp edx, dword [esi + 0x44]
jb 0x446cd2
mov ecx, 0x8000
cmp word [esp + 0x24], cx
jae 0x446a64
mov ah, byte [edi + 4]
mov cl, ah
and cl, 0x1f
cmp cl, 4
jne 0x4469c4
mov ecx, dword [edi]
mov edi, dword [ecx + 8]
jmp 0x446a0f
cmp cl, 0xe
jne 0x4469d3
mov ecx, dword [edi + 8]
mov edi, dword [edi + 0xc]
add edi, edi
jmp 0x4469e9
cmp cl, 2
ja 0x4469e1
movzx edi, ah
and edi, 0x1f
dec edi
jmp 0x446a0f
mov ecx, dword [edi]
lea edi, [ecx - 0x4c11db7]
mov dword [esp + 0x44], edi
shl dword [esp + 0x44], 0xe
mov dword [esp + 0x2c], ecx
mov ecx, edi
xor ecx, dword [esp + 0x2c]
shr edi, 0x12
or edi, dword [esp + 0x44]
sub ecx, edi
ror edi, 0x1b
xor edi, ecx
ror ecx, 0x13
sub edi, ecx
mov ecx, ebx
and ecx, 0x80
test edi, edi
jne 0x446a71
test ecx, ecx
jne 0x446a33
dec edx
mov eax, ebx
and al, 7
mov byte [edx], 0x14
cmp al, 4
jne 0x446a2f
dec edx
mov byte [edx], 0x24
mov al, 0x40
jmp 0x446a43
add edx, 0xfffffffc
mov ebx, 5
xor al, al
mov dword [edx], 0x14
and bl, 7
add bl, byte [esp + 0x3c]
add bl, al
lea eax, [edx - 2]
mov byte [edx - 1], bl
pop edi
mov dword [edx - 5], 0x8b0000fe
mov dword [esi + 0x40], eax
pop esi
pop ebp
pop ebx
add esp, 0x28
ret
mov ecx, ebx
mov edi, 1
and ecx, 0x80
test ecx, ecx
jne 0x446a8d
dec edx
mov ecx, ebx
and cl, 7
mov byte [edx], 0x14
cmp cl, 4
jne 0x446a87
dec edx
mov byte [edx], 0x24
mov ah, 0x40
mov ecx, ebx
jmp 0x446a9d
add edx, 0xfffffffc
mov ecx, 5
xor ah, ah
mov dword [edx], 0x14
and cl, 7
mov dword [edx - 5], 0x30000fe
add cl, byte [esp + 0x3c]
add cl, ah
mov byte [edx - 1], cl
lea ecx, [edx - 3]
mov dword [esi + 0x40], ecx
mov byte [ecx], 3
mov edx, dword [esi + 0x40]
mov cl, byte [esp + 0x11]
sub cl, 0x20
mov byte [edx - 1], cl
lea ecx, [edx - 2]
mov dword [esp + 0x44], ecx
mov dword [edx - 5], 0xc10000fe
mov edx, dword [esp + 0x14]
mov ecx, edx
and ecx, 7
cmp cl, 5
mov ecx, dword [esp + 0x44]
je 0x446aea
mov ah, 4
jmp 0x446af4
dec ecx
mov ah, 0x44
mov dword [esp + 0x44], ecx
mov byte [ecx], 0
mov al, byte [esp + 0x12]
mov ebp, dword [esp + 0x44]
add al, 0x40
add ah, byte [esp + 0x3c]
mov byte [ecx - 1], al
mov al, byte [esp + 0x40]
mov byte [ecx - 2], ah
add ecx, 0xfffffffd
mov dword [ebp - 6], 0x8d0000fe
mov ebp, dword [esp + 0x18]
mov dword [esi + 0x40], ecx
mov ecx, 0x8000
cmp word [esp + 0x24], cx
jae 0x446b53
push edi
push edx
push 0x838104
push esi
call fcn.0044c170
push 0x1c
push ebx
push dword [esp + 0x2c]
push 0x8b0000fe
push esi
call fcn.0044c580
add esp, 0x24
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x28
ret
cmp al, 4
jne 0x446b83
push 8
push ebp
push edx
push 0x230000fe
push esi
call fcn.0044c580
push 0x1c
push ebx
push dword [esp + 0x30]
push 0x8b0000fe
push esi
call fcn.0044c580
add esp, 0x28
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x28
ret
push 0x1c
push ebx
push edx
push 0x230000fe
push esi
call fcn.0044c580
mov eax, dword [esi + 0x40]
add esp, 0x14
mov ebx, dword [esp + 0x20]
mov dl, byte [esp + 0x3c]
and bl, 7
sub dl, 0x40
mov dword [esp + 0x20], ebx
mov dword [eax - 5], 0x2b0000fe
add dl, bl
mov byte [eax - 1], dl
add eax, 0xfffffffd
mov dword [esi + 0x40], eax
mov byte [eax], 0xd
mov al, bl
mov ecx, dword [esi + 0x40]
sub al, 0x40
shl bl, 3
mov byte [ecx - 1], al
lea eax, [ecx - 5]
mov dword [ecx - 5], 0xc10000fe
mov byte [ecx - 3], dl
mov dword [ecx - 7], 0x330000fe
mov ch, byte [esp + 0x11]
mov dword [esi + 0x40], eax
mov cl, ch
mov byte [eax], 5
sub cl, 0x40
mov eax, dword [esi + 0x40]
sub ch, 0x40
add ch, bl
mov byte [eax - 1], cl
mov dword [eax - 5], 0xc10000fe
mov byte [eax - 3], ch
mov dword [eax - 7], 0x2b0000fe
add eax, 0xfffffffb
cmp byte [esp + 0x40], 0xe
mov dword [esi + 0x40], eax
mov byte [eax], 0xe
mov edx, dword [esi + 0x40]
mov byte [edx - 1], cl
mov dword [edx - 5], 0xc10000fe
mov byte [edx - 3], ch
mov dword [edx - 7], 0x330000fe
jne 0x446c96
mov al, byte [esp + 0x13]
mov ebp, dword [esp + 0x28]
mov byte [edx - 5], al
lea eax, [edx - 6]
push ebp
mov dword [edx - 9], 0x30000fe
push esi
mov dword [esi + 0x40], eax
call fcn.0044dec0
add eax, 4
push eax
push 4
push dword [esp + 0x24]
push 0x8b0000fe
push esi
call fcn.0044c580
mov ecx, dword [esi + 0x40]
add esp, 0x1c
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x20]
and al, 7
shl al, 3
sub dl, 0x40
add al, dl
mov byte [ecx - 1], al
lea eax, [ecx - 4]
pop edi
mov dword [ecx - 5], 0x7e0f66fc
mov dword [esi + 0x40], eax
pop esi
pop ebp
pop ebx
add esp, 0x28
ret
mov ecx, dword [esp + 0x18]
mov al, cl
push 0xfb3ee249
and al, 7
push ecx
push dword [esp + 0x1c]
sub al, 0x40
add al, bl
mov byte [edx - 5], al
lea eax, [edx - 6]
push 0x8d0000fe
mov dword [edx - 9], 0x8b0000fe
push esi
mov dword [esi + 0x40], eax
call fcn.0044c580
add esp, 0x14
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x28
ret
push esi
call fcn.004488a0
int3