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

Disassembly:
sub esp, 0x18
push ebx
push esi
mov esi, ecx
mov eax, dword [esi + 0x14]
push edi
mov edi, dword [esp + 0x2c]
mov word [esi + 0x24], di
mov cx, word [eax + 0x18]
mov word [esi + 0x18], cx
mov dl, byte [eax + 0x1b]
mov byte [esi + 0x1b], dl
mov al, byte [eax + 0x1a]
mov edx, dword [esi]
mov byte [esi + 0x1a], al
mov eax, dword [esp + 0x30]
mov dword [esi + 0x34], eax
mov ecx, dword [eax + 0x3c]
mov dword [esi + 0x30], ecx
mov ecx, esi
call dword [edx + 0x2c]
mov cl, byte [esi + 9]
mov ebx, eax
mov al, byte [ebx + 9]
xor al, cl
and al, 8
mov dl, cl
xor dl, al
mov byte [esi + 9], dl
mov eax, dword [ebx + 0x60]
cmp eax, 0xffffffe0
mov dword [esp + 0x14], ebx
je 0x513f73
cmp eax, 0xffffffd9
je 0x513f73
xor eax, eax
jmp 0x513f78
mov eax, 1
mov cl, byte [esi + 0x8c]
mov dl, byte [esi + 0x8c]
xor cl, al
and cl, 1
xor dl, cl
push ebp
mov ecx, edi
mov byte [esi + 0x8c], dl
call fcn.0055f240
mov edi, eax
mov eax, dword [edi + 8]
mov dword [esi + 0x28], eax
mov bp, word [eax + 0x42]
mov ecx, esi
call fcn.0055f0c0
add ebx, 0xa8
push ebx
push esi
mov ecx, edi
mov dword [esp + 0x3c], ebx
call fcn.0054cf90
mov edi, eax
push ebx
mov ecx, edi
mov dword [esp + 0x28], edi
call fcn.0054c000
mov dword [esp + 0x20], eax
mov eax, dword [edi + 8]
mov dword [esi + 0x28], eax
cmp bp, word [eax + 0x42]
je 0x513fe4
mov ecx, esi
call fcn.0055f0c0
mov eax, dword [esi + 0x28]
xor ebx, ebx
cmp word [eax + 0x16], bx
je 0x51401a
movzx eax, word [eax + 0x16]
lea edx, [esp + 0x30]
push edx
lea ecx, [esp + 0x18]
push ecx
lea ecx, [eax + eax*2]
push 0x3a
lea ecx, [ecx*4 + 0x63c460]
call fcn.00510f20
mov ecx, dword [esp + 0x14]
call fcn.00519110
mov dword [esi + 0x4c], eax
mov ebp, dword [esp + 0x2c]
test byte [ebp + 0x60], 2
je 0x51407c
mov edx, dword [esi + 0x28]
cmp word [edx + 6], bx
je 0x51407c
push ebx
push 8
mov ecx, 0x63b514
call fcn.004e1dd0
cmp eax, ebx
je 0x514045
mov dword [eax], ebx
mov dword [eax + 4], ebx
jmp 0x514047
xor eax, eax
mov dword [esi + 0x5c], eax
mov eax, dword [esi + 0x28]
mov cx, word [eax + 6]
push esi
mov edx, 0x5138d0
call fcn.004eebf0
mov edi, dword [esi + 0x5c]
cmp dword [edi], ebx
jne 0x51407c
cmp edi, ebx
je 0x514079
mov ecx, edi
call fcn.0054c2e0
push edi
mov ecx, 0x63b514
call fcn.004e1d70
mov dword [esi + 0x5c], ebx
mov ecx, dword [esi + 0x28]
mov edx, dword [ecx + 0x9c]
mov cl, byte [esi + 0x8b]
mov eax, 2
cmp edx, eax
sete dl
shl dl, 2
xor dl, cl
and dl, 4
xor cl, dl
mov edx, dword [esi + 0x28]
mov byte [esi + 0x8b], cl
cmp dword [edx + 0x74], eax
sete al
shl al, 4
xor al, cl
and al, 0x10
xor al, cl
mov ecx, edx
mov byte [esi + 0x8b], al
cmp word [ecx + 2], bx
je 0x514124
push ebx
or al, 0x20
push 8
mov ecx, 0x63b514
mov dword [esp + 0x20], esi
mov dword [esp + 0x24], ebp
mov byte [esi + 0x8b], al
call fcn.004e1dd0
cmp eax, ebx
je 0x5140ed
mov dword [eax], ebx
mov dword [eax + 4], ebx
jmp 0x5140ef
xor eax, eax
mov dword [esi + 0x38], eax
mov eax, dword [esi + 0x28]
mov cx, word [eax + 2]
lea edx, [esp + 0x18]
push edx
mov edx, 0x513d40
call fcn.004eebf0
mov ecx, dword [esi + 0x38]
cmp dword [ecx], ebx
jne 0x514560
push str.Empty_definition_
mov ecx, esi
call fcn.004eced0
jmp 0x514560
test byte [esi + 9], 8
mov dword [esp + 0x30], ebx
je 0x51414d
mov edx, dword [esi]
mov ecx, esi
call dword [edx + 0x38]
mov edx, str.Password
mov ecx, eax
call fcn.004fada0
test eax, eax
je 0x51414d
mov dword [esp + 0x30], 1
mov dl, byte [esi + 0x8b]
mov eax, dword [esi + 0x34]
and dl, 0xdf
mov byte [esi + 0x8b], dl
mov ecx, dword [eax + 0x34]
mov edx, dword [ecx + 0x30]
mov eax, dword [esi + 0x28]
mov ecx, dword [eax + 0x64]
mov al, byte [esi + 0x8c]
mov dword [esp + 0x14], edx
mov dl, byte [esi + 9]
shr dl, 3
and dl, 1
mov dword [esi + 0x7c], ecx
mov ebx, 0xa
je 0x514220
and al, 0xfd
mov byte [esi + 0x8c], al
mov cl, al
mov eax, dword [esi + 0x28]
mov ax, word [eax + 0x32]
test ax, ax
je 0x5141d3
movzx eax, ax
lea eax, [eax + eax*2]
lea eax, [eax*4 + 0x63c460]
mov eax, dword [eax]
test eax, eax
je 0x5141d3
cmp dword [eax], 0x22
jne 0x5141d3
mov eax, dword [eax + 8]
mov eax, dword [eax]
cmp dword [eax], 2
sete al
shl al, 1
xor al, cl
and al, 2
xor al, cl
mov byte [esi + 0x8c], al
mov al, byte [esi + 0x8c]
and al, 0xf7
mov byte [esi + 0x8c], al
mov cl, al
mov eax, dword [esi + 0x28]
mov ax, word [eax + 0xb6]
test ax, ax
je 0x514228
movzx eax, ax
lea eax, [eax + eax*2]
lea eax, [eax*4 + 0x63c460]
mov eax, dword [eax]
test eax, eax
je 0x514228
cmp dword [eax], 0x22
jne 0x514228
mov eax, dword [eax + 8]
mov eax, dword [eax]
cmp dword [eax], 2
sete al
shl al, 3
xor al, cl
and al, 8
xor al, cl
jmp 0x514222
or al, bl
mov byte [esi + 0x8c], al
mov eax, dword [esi + 0x28]
mov ecx, dword [eax + 0x7c]
mov ebp, 2
cmp ecx, ebp
mov edi, 5
jne 0x5142a8
call fcn.00510980
mov ecx, dword [esi + 0x28]
xor edx, edx
mov dword [esp + 0x10], eax
mov dx, word [ecx + 0x30]
push 0
push 0
push esi
lea edi, [esi + 0x38]
lea ecx, [esp + 0x1c]
push edx
push edi
call fcn.00511250
cmp dword [edi], 0
jne 0x514272
mov ecx, 1
call fcn.004dc530
mov dword [edi], eax
mov eax, dword [edi]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x514277
sub eax, edx
test ax, ax
mov word [esi + 0x62], ax
jg 0x51428f
mov word [esi + 0x62], 1
mov al, byte [esi + 0x8c]
mov ecx, dword [esp + 0x10]
or al, 2
mov byte [esi + 0x8c], al
call fcn.00510970
jmp 0x514308
test dl, dl
je 0x5142e2
mov ax, word [eax + 0x4c]
test ax, ax
mov word [esi + 0x62], ax
jg 0x5142bf
mov word [esi + 0x62], 1
mov eax, 0x800
cmp word [esi + 0x62], ax
jle 0x5142ce
mov word [esi + 0x62], ax
cmp dword [esi + 0x80], ebx
jne 0x5142e6
cmp word [esi + 0x62], di
jge 0x5142e6
mov word [esi + 0x62], di
jmp 0x5142e6
mov word [esi + 0x62], bx
movsx ecx, word [esi + 0x62]
inc ecx
call fcn.004dc530
mov dword [esi + 0x38], eax
cmp dword [esi + 0x7c], edi
jne 0x514308
test byte [esi + 0x8c], 2
jne 0x514308
mov dword [esi + 0x7c], 1
mov eax, dword [esp + 0x2c]
mov eax, dword [eax + 0xc]
cmp eax, 0x4e
je 0x514338
cmp eax, 0x4d
je 0x514338
mov ecx, dword [esi + 0x28]
mov eax, dword [ecx + 0x78]
mov bl, byte [esi + 0x8b]
cmp eax, ebp
sete dl
shl dl, 6
xor dl, bl
and dl, 0x40
mov al, bl
xor al, dl
jmp 0x514340
mov al, byte [esi + 0x8b]
and al, 0xbf
mov byte [esi + 0x8b], al
mov eax, dword [esp + 0x18]
push eax
mov ecx, esi
call fcn.00513960
mov ecx, dword [esi + 0x28]
mov al, byte [esi + 0x8c]
movsx cx, byte [ecx + 0xaa]
shr al, 1
and al, 1
mov word [esi + 0x64], cx
jne 0x51437e
test byte [esi + 9], 8
je 0x51437e
test cx, cx
jne 0x51437e
mov word [esi + 0x64], 1
mov ebx, 1
xor ebp, ebp
cmp word [esi + 0x64], bx
jg 0x5143a1
mov ecx, dword [esp + 0x30]
test ecx, ecx
jne 0x5143a1
test al, al
jne 0x5143b1
test byte [esi + 9], 8
je 0x51448d
mov ecx, esi
call fcn.00513e10
mov edx, dword [esp + 0x30]
mov ebp, eax
mov dword [ebp + 0x50], edx
test byte [esi + 9], 8
je 0x51448d
test ebp, ebp
je 0x51440e
mov eax, dword [esi + 0x28]
xor ecx, ecx
mov cx, word [eax + 8]
test cx, cx
je 0x51440e
call fcn.00512aa0
mov edi, eax
test edi, edi
je 0x51440e
add ebp, 0x2c
jmp 0x5143e0
mov ecx, 0x14
call fcn.004dc530
test eax, eax
je 0x5143fd
mov cx, word [edi]
mov dword [eax], 0x60e998
mov word [eax + 0xc], cx
jmp 0x5143ff
xor eax, eax
push eax
mov ecx, ebp
call fcn.004e6190
mov edi, dword [edi + 4]
test edi, edi
jne 0x5143e0
mov ecx, dword [esi + 0x28]
mov ebp, dword [esp + 0x14]
xor eax, eax
mov ax, word [ecx + 0x3c]
test ax, ax
je 0x514429
push eax
push esi
mov ecx, ebp
call fcn.0054a4c0
mov eax, dword [ebp + 0xa0]
test eax, eax
jne 0x51444c
mov edx, dword [ebp + 0x2c]
mov eax, dword [esi]
mov edi, dword [edx + 8]
mov ecx, esi
call dword [eax + 0x3c]
cmp word [edi + 0x26], ax
jne 0x51444c
mov dword [ebp + 0xa0], esi
mov ecx, dword [ebp + 0x2c]
mov edi, dword [ecx + 8]
cmp word [edi + 0x32], 0
je 0x51448d
cmp word [edi + 0x36], 0
je 0x51448d
cmp word [edi + 0x34], 0
je 0x51448d
mov edx, dword [esi]
mov ecx, esi
call dword [edx + 0x3c]
cmp word [edi + 0x32], ax
jne 0x51448d
test byte [esi + 0x8c], 2
jne 0x51448d
mov eax, dword [esi + 0x28]
cmp word [eax + 4], 0
jne 0x51448d
mov dword [ebp + 0xa4], esi
mov eax, dword [esi + 0x7c]
test eax, eax
jne 0x514497
mov dword [esi + 0x7c], ebx
test byte [esi + 0x8c], 2
je 0x5144a7
or byte [esi + 0x8a], 2
mov eax, dword [esi + 0x80]
cmp eax, 3
je 0x5144bc
cmp eax, 4
je 0x5144bc
cmp eax, 5
jne 0x5144f6
mov ecx, dword [esi + 0x34]
push esi
call fcn.0055ef50
mov ebp, eax
test ebp, ebp
je 0x5144f6
mov ecx, 0x14
call fcn.004dc4c0
mov edi, eax
test edi, edi
je 0x5144f1
mov ecx, dword [esi + 0x80]
push ecx
mov ecx, edi
call fcn.004f5dd0
mov dword [edi + 0xc], ebp
mov dword [edi + 0x10], ebp
jmp 0x5144f3
xor edi, edi
mov dword [esi + 0x44], edi
mov eax, dword [esp + 0x2c]
cmp dword [eax + 0xc], 0x4e
je 0x514560
mov dx, word [0x71f072]
mov ecx, dword [esp + 0x18]
mov word [esp + 0x2c], dx
cmp dword [ecx + 0x60], 0xfffffff3
jne 0x514536
mov edx, dword [esi + 0x28]
xor ecx, ecx
mov cx, word [edx + 0x26]
test cx, cx
je 0x514536
mov edx, dword [esp + 0x2c]
push eax
mov eax, dword [esp + 0x38]
push eax
push esi
call fcn.00516890
jmp 0x51455d
mov ecx, dword [esi + 0x28]
movzx ecx, word [ecx + 0x24]
test cx, cx
mov edx, dword [esp + 0x34]
push eax
je 0x514554
push edx
mov edx, dword [esp + 0x34]
push esi
call fcn.00516890
jmp 0x51455d
mov ecx, dword [esp + 0x30]
call fcn.00516810
mov dword [esi + 0x50], eax
test byte [esi + 0x8b], 4
pop ebp
jne 0x5145b7
mov eax, dword [esi + 0x28]
cmp word [eax + 0x40], 0
je 0x5145b7
call fcn.00510980
mov ecx, dword [esi + 0x28]
xor edx, edx
mov dword [esp + 0x28], eax
mov dx, word [ecx + 0x40]
push 0x400
push esi
push esi
lea ecx, [esp + 0x34]
push edx
call fcn.005113c0
mov bl, byte [esi + 0x8b]
shl al, 3
xor al, bl
and al, 8
mov cl, bl
xor cl, al
mov byte [esi + 0x8b], cl
mov ecx, dword [esp + 0x28]
call fcn.00510970
mov eax, dword [esp + 0x1c]
test eax, eax
pop edi
pop esi
pop ebx
je 0x5145d1
mov ecx, dword [esp + 0x24]
push ecx
mov ecx, dword [esp + 0x18]
push eax
call fcn.0054c040
add esp, 0x18
ret 0xc