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

Disassembly:
mov al, byte [esp + 4]
sub esp, 0x48
push ebx
push esi
mov byte [ecx + 0x148], al
push edi
push ebp
mov esi, ecx
mov cl, byte [esp + 0x60]
cmp al, 0xa
mov byte [esi + 0x149], cl
jne 0x4ad88a
xor edx, edx
mov eax, dword [esi + 0xfc]
cmp eax, edx
je 0x4ad88a
mov eax, dword [esi + 0x10c]
cmp word [eax + 0x8d68], dx
jle 0x4ad88a
xor ecx, ecx
movsx edi, dx
lea ebx, [edi + edi*4]
inc dx
mov eax, edi
lea edi, [ebx + ebx*4]
lea ebp, [eax + edi*2]
mov eax, dword [esi + 0x10c]
mov byte [eax + ebp*8 + 0xa9], cl
mov eax, dword [esi + 0x10c]
cmp word [eax + 0x8d68], dx
jg 0x4ad85e
lea eax, [esp + 0x54]
lea ecx, [esp + 0x3c]
push eax
push ecx
mov ecx, dword [esi + 0x108]
add ecx, 0x50
call fcn.004ef220
mov byte [esp + 0x13], 0x32
mov al, byte [esi + 0x148]
cmp al, 0x28
je 0x4ad8c5
cmp al, 0x3c
je 0x4ad8c9
cmp al, 0x29
je 0x4ad8c5
cmp al, 0x2a
je 0x4ad8c5
cmp al, 0x2b
je 0x4ad8c5
cmp al, 0x2c
jne 0x4ad942
cmp al, 0x3c
jne 0x4ad8e9
mov ecx, dword [esp + 0x70]
fld dword [ecx]
call fcn.005194c4
mov word [esp + 0x14], ax
mov ecx, dword [esp + 0x74]
fld dword [ecx]
call fcn.005194c4
mov word [esp + 0x16], ax
mov ecx, dword [esp + 0x70]
mov eax, dword [esp + 0x74]
mov edx, dword [esp + 0x78]
nop
mov dword [ecx], 0
mov ecx, dword [esp + 0x7c]
mov dword [eax], 0
mov word [edx], 0
mov word [ecx], 0
mov al, byte [esi + 0x148]
cmp al, 0x29
je 0x4ad926
cmp al, 0x2a
je 0x4ad926
cmp al, 0x2b
je 0x4ad926
cmp al, 0x2c
jne 0x4ad930
mov eax, dword [esp + 0x6c]
mov ecx, dword [eax]
mov dword [esp + 0x38], ecx
mov eax, dword [esp + 0x6c]
mov dword [esp + 0x34], 0
mov dword [eax], 0
mov al, byte [esi + 0x148]
cmp al, 0xe
jne 0x4ad979
lea eax, [esp + 0x50]
push 1
lea ecx, [esp + 0x4c]
push eax
lea edx, [esp + 0x54]
push ecx
lea eax, [esp + 0x50]
push edx
push eax
mov ecx, esi
call fcn.004abf00
test eax, eax
jne 0x4ad979
xor eax, eax
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x48
ret 0x24
mov ax, word [esi + 0x12e]
mov cx, word [esi + 0x130]
mov dx, word [esi + 0x132]
mov word [esp + 0x26], ax
mov ax, word [esi + 0x134]
mov word [esp + 0x2a], cx
mov cx, word [esi + 0x120]
mov word [esp + 0x20], dx
lea edx, [ecx*2 + 0xc]
mov byte [esp + 0x12], 4
mov word [esp + 0x1c], 0
mov word [esp + 0x22], ax
mov ax, word [esi + 0x11e]
add ax, 4
mov word [esp + 0x1a], ax
mov word [esp + 0x1e], dx
mov word [esp + 0x24], ax
test dx, dx
jle 0x4ae222
mov word [esp + 0x18], 0
mov bp, word [esp + 0x26]
cmp word [esp + 0x24], 0
mov ax, word [esp + 0x20]
mov cx, word [esp + 0x22]
mov word [esp + 0x2c], ax
mov word [esp + 0x2e], cx
jle 0x4ae177
cmp word [esp + 0x2c], 0
jl 0x4ada46
mov ecx, dword [esi + 0x10c]
movsx eax, word [esp + 0x2c]
cmp dword [ecx + 8], eax
jle 0x4ada46
cmp word [esp + 0x2e], 0
jl 0x4ada46
movsx eax, word [esp + 0x2e]
cmp dword [ecx + 0xc], eax
jle 0x4ada46
mov dword [esp + 0x30], 1
jmp 0x4ada4e
mov dword [esp + 0x30], 0
mov eax, dword [esp + 0x30]
test eax, eax
jne 0x4ada74
mov al, byte [esi + 0x148]
cmp al, 0x28
je 0x4ada68
cmp al, 0x2a
jne 0x4ae151
mov eax, dword [esp + 0x30]
test eax, eax
je 0x4adafc
mov eax, dword [esi + 0x108]
mov ecx, dword [eax + 0x34]
test ecx, ecx
je 0x4adab6
mov eax, dword [esi + 0x10c]
mov dl, byte [eax + 0x8d90]
test dl, dl
jne 0x4adab6
movsx edi, word [esp + 0x2c]
movsx eax, word [esp + 0x2e]
push eax
push edi
call fcn.0048bd20
mov bl, al
mov al, byte [esi + 0x148]
cmp al, 0x1e
je 0x4adab2
cmp al, 0x1f
jne 0x4adacf
mov bl, 0xf
jmp 0x4adacf
movsx edi, word [esp + 0x2c]
movsx eax, word [esp + 0x2e]
push eax
push edi
call fcn.0048bd20
mov bl, al
test bl, bl
jne 0x4adacf
mov bl, pe_nt_image_headers32
mov al, byte [esi + 0x148]
cmp al, 0xb
jne 0x4adafe
mov eax, dword [esi + 0x10c]
movsx ecx, word [esp + 0x2e]
mov edx, dword [eax + 0x8d64]
lea eax, [edi + edi*2]
mov ecx, dword [edx + ecx*4]
mov dl, byte [ecx + eax*8 + 9]
lea ecx, [ecx + eax*8]
cmp byte [ecx + 7], dl
jne 0x4adafe
xor bl, bl
cmp bl, 0xf
je 0x4adb0a
cmp bl, 0x80
je 0x4adb0a
xor bl, bl
test bl, bl
jne 0x4adb28
mov al, byte [esi + 0x148]
cmp al, 0xe
je 0x4adb28
cmp al, 0x28
je 0x4adb28
cmp al, 0x3c
je 0x4adb28
cmp al, 0x2a
jne 0x4ae151
mov eax, dword [esp + 0x30]
test eax, eax
jne 0x4adb38
xor edi, edi
xor cl, cl
xor al, al
jmp 0x4adb61
movsx ecx, word [esp + 0x2c]
mov eax, dword [esi + 0x10c]
lea ecx, [ecx + ecx*2]
movsx edx, word [esp + 0x2e]
mov edi, dword [eax + 0x8d64]
mov edx, dword [edi + edx*4]
mov al, byte [edx + ecx*8 + 5]
lea edi, [edx + ecx*8]
shr al, 5
mov cl, byte [edi + 4]
mov dx, word [esp + 0x2a]
and eax, 0xffff00ff
imul ax, word [esi + 0x118]
sub dx, ax
xor eax, eax
mov word [esp + 0x28], dx
mov al, cl
lea edx, [eax - 2]
cmp edx, 0xe
ja case.0x4adb8f.7
xor ecx, ecx
mov cl, byte [edx + 0x4ae2d4]
jmp dword [ecx*4 + 0x4ae2bc]
mov cx, word [esi + 0x118]
sub word [esp + 0x28], cx
movsx ecx, bp
mov edx, dword [esi + 0x60]
mov dword [esp + 0x30], ecx
cmp edx, ecx
jl 0x4adc17
movsx ecx, word [esp + 0x28]
cmp dword [esi + 0x64], ecx
jl 0x4adc17
mov edx, dword [esi + 0x10c]
lea eax, [edx + eax*4]
movsx edx, word [eax + 0x18]
add edx, dword [esp + 0x30]
cmp edx, dword [esi + 0x58]
jle 0x4adc17
movsx eax, word [eax + 0x1a]
add eax, ecx
mov ecx, dword [esi + 0x5c]
cmp eax, ecx
jle 0x4adc17
mov al, byte [esi + 0x148]
cmp al, 0xe
jne 0x4adc0d
movsx eax, word [esp + 0x2c]
cmp eax, dword [esp + 0x44]
jl 0x4adc17
mov ecx, dword [esp + 0x48]
cmp ecx, eax
jl 0x4adc17
movsx eax, word [esp + 0x2e]
cmp eax, dword [esp + 0x4c]
jl 0x4adc17
mov ecx, dword [esp + 0x50]
cmp ecx, eax
jl 0x4adc17
mov dword [esp + 0x40], 0
jmp 0x4adc1f
mov dword [esp + 0x40], 1
mov cl, byte [esi + 0x148]
cmp cl, 0xa
je 0x4adeb0
cmp cl, 0x1e
je 0x4adeb0
cmp cl, 0x1f
je 0x4adeb0
cmp cl, 0x20
je 0x4adeb0
cmp cl, 0x15
je 0x4adeb0
cmp cl, 0xb
je 0x4adeb0
cmp cl, 0xe
je 0x4adeb0
cmp bl, 0xf
je 0x4adc72
cmp bl, 0x80
jne 0x4add54
cmp cl, 0x29
je 0x4adc8a
cmp cl, 0x2a
je 0x4adc8a
cmp cl, 0x2b
je 0x4adc8a
cmp cl, 0x2c
jne 0x4add54
cmp bl, 0xf
je 0x4adca8
cmp bl, 0x80
jne 0x4adca4
mov eax, dword [esi + 0x10c]
mov cl, byte [eax + 0x8d91]
test cl, cl
je 0x4adca8
mov al, 1
jmp 0x4adcaa
xor al, al
mov ecx, dword [esp + 0x38]
push eax
mov eax, dword [esp + 0x80]
push ecx
mov edx, dword [esp + 0x80]
push eax
mov ecx, dword [esp + 0x74]
push edx
mov eax, dword [esp + 0x74]
push ecx
mov edx, dword [esp + 0x42]
push eax
mov ecx, dword [esp + 0x44]
push edx
mov eax, dword [esp + 0x46]
push ecx
push eax
mov ecx, esi
push ebp
push edi
call fcn.004b13b0
test eax, eax
je 0x4add54
mov cl, byte [esi + 0x148]
cmp cl, 0x2c
je 0x4add4f
mov ecx, dword [esp + 0x38]
test ecx, ecx
je 0x4add0a
cmp ecx, eax
jne 0x4add0a
mov cl, byte [esp + 0x13]
cmp cl, 0x34
je 0x4ae2a0
mov ecx, dword [esp + 0x34]
test ecx, ecx
je 0x4add38
mov edx, dword [ecx + 0x30]
mov ebx, dword [eax + 0x30]
mov cl, byte [ebx + 0x89]
mov bl, byte [edx + 0x89]
cmp bl, cl
jbe 0x4add38
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x34]
cmp edx, ecx
jne 0x4add54
cmp ecx, eax
je 0x4add54
mov edx, dword [eax + 0x38]
mov ecx, dword [esp + 0x70]
mov dword [esp + 0x34], eax
nop
mov dword [ecx], edx
mov edx, dword [esp + 0x74]
mov ebx, dword [eax + 0x3c]
mov dword [edx], ebx
mov byte [esp + 0x13], 0x34
mov al, byte [esi + 0x148]
cmp al, 0x28
je 0x4adde5
cmp al, 0x2a
jne 0x4add6f
mov cl, byte [esp + 0x13]
cmp cl, 0x32
je 0x4adde5
cmp al, 0x3c
jne 0x4ae151
mov ax, word [esp + 0x2c]
cmp word [esp + 0x14], ax
jne 0x4ae151
mov ax, word [esp + 0x2e]
cmp word [esp + 0x16], ax
jne 0x4ae151
movsx eax, word [esp + 0x2c]
movsx edx, word [esp + 0x2e]
mov ecx, dword [esp + 0x70]
mov dword [esp + 0x3c], eax
fild dword [esp + 0x3c]
mov eax, dword [esp + 0x74]
fstp dword [ecx]
mov ecx, dword [esp + 0x78]
mov dword [esp + 0x3c], edx
fild dword [esp + 0x3c]
mov edx, dword [esp + 0x7c]
fstp dword [eax]
mov ax, word [esp + 0x28]
mov word [ecx], bp
mov ecx, dword [esp + 0x6c]
mov word [edx], ax
pop ebp
mov eax, 0x33
mov dword [ecx], edi
pop edi
pop esi
pop ebx
add esp, 0x48
ret 0x24
mov eax, dword [esp + 0x64]
mov ecx, dword [esp + 0x2e]
mov edx, dword [esp + 0x2c]
push eax
mov eax, dword [esp + 0x2c]
push ecx
push edx
mov ecx, esi
push eax
push ebp
push edi
call fcn.004b1260
test eax, eax
je 0x4ae151
test edi, edi
je 0x4ade65
mov ecx, dword [esp + 0x74]
mov eax, dword [esp + 0x70]
mov edx, dword [esp + 0x64]
push ecx
push eax
mov ecx, dword [esi + 0x10c]
push edi
mov eax, dword [edx + 4]
sub ax, word [esp + 0x34]
push eax
mov eax, dword [edx]
sub ax, bp
push eax
call fcn.004b6930
movsx ecx, word [esp + 0x2c]
movsx eax, word [esp + 0x2e]
mov edx, dword [esp + 0x70]
mov dword [esp + 0x30], ecx
fild dword [esp + 0x30]
mov ecx, dword [esp + 0x74]
mov dword [esp + 0x30], eax
fild dword [esp + 0x30]
fxch st(1)
fadd dword [edx]
fstp dword [edx]
fadd dword [ecx]
fstp dword [ecx]
jmp 0x4ade8d
movsx eax, word [esp + 0x2c]
movsx edx, word [esp + 0x2e]
mov ecx, dword [esp + 0x70]
mov dword [esp + 0x30], eax
fild dword [esp + 0x30]
mov eax, dword [esp + 0x74]
mov dword [esp + 0x30], edx
fild dword [esp + 0x30]
fxch st(1)
fstp dword [ecx]
fstp dword [eax]
mov dx, word [esp + 0x28]
mov eax, dword [esp + 0x78]
mov word [eax], bp
mov ecx, dword [esp + 0x7c]
mov word [ecx], dx
mov eax, dword [esp + 0x6c]
mov byte [esp + 0x13], 0x33
mov dword [eax], edi
jmp 0x4ae151
mov eax, dword [esp + 0x40]
test eax, eax
jne 0x4adf5b
cmp cl, 0xa
je 0x4adecf
cmp cl, 0xb
je 0x4adecf
cmp cl, 0xe
jne 0x4adf5b
mov al, byte [edi + 5]
and al, 0x1f
mov byte [esp + 0x28], al
xor eax, eax
mov al, byte [esp + 0x28]
mov dword [esp + 0x30], eax
lea edx, [eax + eax*4]
lea eax, [edx + edx*4]
mov edx, dword [esp + 0x30]
lea eax, [edx + eax*2]
mov edx, dword [esi + 0x10c]
mov ax, word [edx + eax*8 + 0x11c]
cmp ax, 0xffff
je 0x4adf07
mov byte [esp + 0x28], al
cmp cl, 0xa
jne 0x4adf4b
mov eax, dword [esi + 0xfc]
test eax, eax
je 0x4adf4b
mov eax, dword [esp + 0x40]
test eax, eax
jne 0x4adf4b
xor eax, eax
mov edx, dword [esi + 0x10c]
movsx ecx, word [edx + 0x8d68]
mov al, byte [esp + 0x28]
cmp ecx, eax
jle 0x4adf4b
lea ecx, [eax + eax*4]
lea edx, [ecx + ecx*4]
mov ecx, dword [esi + 0x10c]
lea eax, [eax + edx*2]
inc byte [ecx + eax*8 + 0xa9]
mov al, byte [esi + 0x148]
cmp al, 0xb
jne 0x4adf5b
mov al, byte [edi + 9]
mov byte [edi + 7], al
cmp bl, 0xf
je 0x4adf69
cmp bl, 0x80
jne 0x4ae151
mov al, byte [esi + 0x148]
cmp al, 0x1e
je 0x4adf83
cmp al, 0x1f
je 0x4adf83
cmp al, 0x20
je 0x4adf83
cmp al, 0x15
jne 0x4ae151
cmp bl, 0xf
je 0x4adfa4
cmp bl, 0x80
jne 0x4adf9d
mov ecx, dword [esi + 0x10c]
mov dl, byte [ecx + 0x8d91]
test dl, dl
je 0x4adfa4
mov byte [esp + 0x30], 1
jmp 0x4adfa9
mov byte [esp + 0x30], 0
cmp al, 0x1e
jne 0x4ae033
mov eax, dword [esi + 0x184]
mov ecx, dword [esi + 0xf8]
mov edx, dword [esp + 0x30]
push edx
mov dword [ecx + 0xec], eax
mov eax, dword [esp + 0x2e]
push 1
mov dword [0x54715c], 1
push eax
mov ecx, dword [esi + 0xf8]
push ebp
push ecx
lea ecx, [edi + 0xc]
call fcn.0043fe20
mov edx, dword [esi + 0x180]
mov ecx, dword [esi + 0xf8]
mov eax, dword [esp + 0x30]
push eax
mov dword [ecx + 0xec], edx
mov edx, dword [esp + 0x2e]
push 1
mov dword [0x54715c], 0
push edx
mov ecx, dword [esi + 0xf8]
push ebp
push ecx
lea ecx, [edi + 0xc]
call fcn.0043fe20
mov eax, dword [esi + 0xf8]
mov ecx, dword [eax + 0xe8]
mov dword [eax + 0xec], ecx
mov al, byte [esi + 0x148]
cmp al, 0x1f
jne 0x4ae0c3
mov eax, dword [esi + 0x184]
mov ecx, dword [esi + 0xf8]
mov edx, dword [esp + 0x30]
push edx
mov dword [ecx + 0xec], eax
mov eax, dword [esp + 0x2e]
push 0xa
mov dword [0x54715c], 1
push eax
mov ecx, dword [esi + 0xf8]
push ebp
push ecx
lea ecx, [edi + 0xc]
call fcn.0043fe20
mov edx, dword [esi + 0x180]
mov ecx, dword [esi + 0xf8]
mov eax, dword [esp + 0x30]
push eax
mov dword [ecx + 0xec], edx
mov edx, dword [esp + 0x2e]
push 0xa
mov dword [0x54715c], 0
push edx
mov ecx, dword [esi + 0xf8]
push ebp
push ecx
lea ecx, [edi + 0xc]
call fcn.0043fe20
mov eax, dword [esi + 0xf8]
mov ecx, dword [eax + 0xe8]
mov dword [eax + 0xec], ecx
mov al, byte [esi + 0x148]
cmp al, 0x20
jne 0x4ae10a
mov eax, dword [esi + 0x10c]
mov cl, byte [eax + 0x8d91]
test cl, cl
je 0x4ae0ec
cmp bl, 0x80
jne 0x4ae0ec
mov dword [0x54715c], 1
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x2a]
push eax
mov edx, dword [esi + 0xf8]
push 0
push ecx
push ebp
lea ecx, [edi + 0xc]
push edx
call fcn.0043fe20
jmp 0x4ae147
cmp al, 0x15
jne 0x4ae151
mov eax, dword [esi + 0x10c]
mov cl, byte [eax + 0x8d91]
test cl, cl
je 0x4ae12d
cmp bl, 0x80
jne 0x4ae12d
mov dword [0x54715c], 1
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x2a]
push eax
mov edx, dword [esi + 0xf8]
push ecx
push ebp
push edx
lea ecx, [edi + 0xc]
call fcn.0043fea0
mov dword [0x54715c], 0
add bp, word [esi + 0x110]
inc word [esp + 0x2c]
inc word [esp + 0x18]
mov ax, word [esp + 0x18]
inc word [esp + 0x2e]
cmp ax, word [esp + 0x24]
jl 0x4ada12
mov al, byte [esp + 0x12]
cmp al, 1
jne 0x4ae190
mov ax, word [esp + 0x24]
cmp word [esp + 0x1a], ax
jne 0x4ae190
mov byte [esp + 0x12], 2
xor eax, eax
mov al, byte [esp + 0x12]
dec eax
cmp eax, 3
ja case.default.0x4ae19c
jmp dword [eax*4 + 0x4ae2e4]
mov ax, word [esi + 0x114]
inc word [esp + 0x24]
sub word [esp + 0x26], ax
dec word [esp + 0x20]
jmp case.default.0x4ae19c
mov ax, word [esi + 0x114]
dec word [esp + 0x24]
add word [esp + 0x26], ax
inc word [esp + 0x22]
jmp case.default.0x4ae19c
mov byte [esp + 0x12], 4
mov ax, word [esi + 0x114]
sub word [esp + 0x26], ax
dec word [esp + 0x20]
jmp case.default.0x4ae19c
mov byte [esp + 0x12], 3
mov ax, word [esi + 0x114]
add word [esp + 0x26], ax
inc word [esp + 0x22]
mov ax, word [esi + 0x116]
inc word [esp + 0x1c]
mov cx, word [esp + 0x1c]
add word [esp + 0x2a], ax
cmp word [esp + 0x1e], cx
jg 0x4ad9e6
mov al, byte [esi + 0x148]
cmp al, 0xa
jne 0x4ae26c
xor dx, dx
xor ecx, ecx
mov eax, dword [esi + 0x10c]
cmp word [eax + 0x8d68], cx
jle 0x4ae26c
movsx edi, dx
lea ebx, [edi + edi*4]
inc dx
mov eax, edi
lea edi, [ebx + ebx*4]
lea ebp, [eax + edi*2]
mov eax, dword [esi + 0x10c]
mov byte [eax + ebp*8 + 0xa8], cl
mov eax, dword [esi + 0x10c]
cmp word [eax + 0x8d68], dx
jg 0x4ae240
mov al, byte [esi + 0x148]
cmp al, 0x29
je 0x4ae27e
cmp al, 0x2a
je 0x4ae27e
cmp al, 0x2b
jne 0x4ae290
mov al, byte [esp + 0x13]
cmp al, 0x34
jne 0x4ae290
mov eax, dword [esp + 0x6c]
mov ecx, dword [esp + 0x34]
mov dword [eax], ecx
xor eax, eax
mov al, byte [esp + 0x13]
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x48
ret 0x24
mov eax, dword [esp + 0x6c]
mov ecx, dword [esp + 0x34]
mov dword [eax], ecx
xor eax, eax
mov al, byte [esp + 0x13]
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x48
ret 0x24