Function at 0x513f30
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 0x513f93
cmp eax, 0xffffffd9
je 0x513f93
xor eax, eax
jmp 0x513f98
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.0055f2d0
mov edi, eax
mov eax, dword [edi + 8]
mov dword [esi + 0x28], eax
mov bp, word [eax + 0x42]
mov ecx, esi
call fcn.0055f150
add ebx, 0xa8
push ebx
push esi
mov ecx, edi
mov dword [esp + 0x3c], ebx
call fcn.0054cff0
mov edi, eax
push ebx
mov ecx, edi
mov dword [esp + 0x28], edi
call fcn.0054c060
mov dword [esp + 0x20], eax
mov eax, dword [edi + 8]
mov dword [esi + 0x28], eax
cmp bp, word [eax + 0x42]
je 0x514004
mov ecx, esi
call fcn.0055f150
mov eax, dword [esi + 0x28]
xor ebx, ebx
cmp word [eax + 0x16], bx
je 0x51403a
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 + 0x676b60]
call fcn.00510f40
mov ecx, dword [esp + 0x14]
call fcn.00519130
mov dword [esi + 0x4c], eax
mov ebp, dword [esp + 0x2c]
test byte [ebp + 0x60], 2
je 0x51409c
mov edx, dword [esi + 0x28]
cmp word [edx + 6], bx
je 0x51409c
push ebx
push 8
mov ecx, 0x675c14
call fcn.004e1e00
cmp eax, ebx
je 0x514065
mov dword [eax], ebx
mov dword [eax + 4], ebx
jmp 0x514067
xor eax, eax
mov dword [esi + 0x5c], eax
mov eax, dword [esi + 0x28]
mov cx, word [eax + 6]
push esi
mov edx, 0x5138f0
call fcn.004eebf0
mov edi, dword [esi + 0x5c]
cmp dword [edi], ebx
jne 0x51409c
cmp edi, ebx
je 0x514099
mov ecx, edi
call fcn.0054c340
push edi
mov ecx, 0x675c14
call fcn.004e1da0
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 0x514144
push ebx
or al, 0x20
push 8
mov ecx, 0x675c14
mov dword [esp + 0x20], esi
mov dword [esp + 0x24], ebp
mov byte [esi + 0x8b], al
call fcn.004e1e00
cmp eax, ebx
je 0x51410d
mov dword [eax], ebx
mov dword [eax + 4], ebx
jmp 0x51410f
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, 0x513d60
call fcn.004eebf0
mov ecx, dword [esi + 0x38]
cmp dword [ecx], ebx
jne 0x514580
push str.Empty_definition_
mov ecx, esi
call fcn.004ecf00
jmp 0x514580
test byte [esi + 9], 8
mov dword [esp + 0x30], ebx
je 0x51416d
mov edx, dword [esi]
mov ecx, esi
call dword [edx + 0x38]
mov edx, str.Password
mov ecx, eax
call fcn.004fae40
test eax, eax
je 0x51416d
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 0x514240
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 0x5141f3
movzx eax, ax
lea eax, [eax + eax*2]
lea eax, [eax*4 + 0x676b60]
mov eax, dword [eax]
test eax, eax
je 0x5141f3
cmp dword [eax], 0x22
jne 0x5141f3
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 0x514248
movzx eax, ax
lea eax, [eax + eax*2]
lea eax, [eax*4 + 0x676b60]
mov eax, dword [eax]
test eax, eax
je 0x514248
cmp dword [eax], 0x22
jne 0x514248
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 0x514242
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 0x5142c8
call fcn.005109a0
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.00511270
cmp dword [edi], 0
jne 0x514292
mov ecx, 1
call fcn.004dc5a0
mov dword [edi], eax
mov eax, dword [edi]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x514297
sub eax, edx
test ax, ax
mov word [esi + 0x62], ax
jg 0x5142af
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.00510990
jmp 0x514328
test dl, dl
je 0x514302
mov ax, word [eax + 0x4c]
test ax, ax
mov word [esi + 0x62], ax
jg 0x5142df
mov word [esi + 0x62], 1
mov eax, 0x800
cmp word [esi + 0x62], ax
jle 0x5142ee
mov word [esi + 0x62], ax
cmp dword [esi + 0x80], ebx
jne 0x514306
cmp word [esi + 0x62], di
jge 0x514306
mov word [esi + 0x62], di
jmp 0x514306
mov word [esi + 0x62], bx
movsx ecx, word [esi + 0x62]
inc ecx
call fcn.004dc5a0
mov dword [esi + 0x38], eax
cmp dword [esi + 0x7c], edi
jne 0x514328
test byte [esi + 0x8c], 2
jne 0x514328
mov dword [esi + 0x7c], 1
mov eax, dword [esp + 0x2c]
mov eax, dword [eax + 0xc]
cmp eax, 0x4e
je 0x514358
cmp eax, 0x4d
je 0x514358
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 0x514360
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.00513980
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 0x51439e
test byte [esi + 9], 8
je 0x51439e
test cx, cx
jne 0x51439e
mov word [esi + 0x64], 1
mov ebx, 1
xor ebp, ebp
cmp word [esi + 0x64], bx
jg 0x5143c1
mov ecx, dword [esp + 0x30]
test ecx, ecx
jne 0x5143c1
test al, al
jne 0x5143d1
test byte [esi + 9], 8
je 0x5144ad
mov ecx, esi
call fcn.00513e30
mov edx, dword [esp + 0x30]
mov ebp, eax
mov dword [ebp + 0x50], edx
test byte [esi + 9], 8
je 0x5144ad
test ebp, ebp
je 0x51442e
mov eax, dword [esi + 0x28]
xor ecx, ecx
mov cx, word [eax + 8]
test cx, cx
je 0x51442e
call fcn.00512ac0
mov edi, eax
test edi, edi
je 0x51442e
add ebp, 0x2c
jmp 0x514400
mov ecx, 0x14
call fcn.004dc5a0
test eax, eax
je 0x51441d
mov cx, word [edi]
mov dword [eax], 0x6329b8
mov word [eax + 0xc], cx
jmp 0x51441f
xor eax, eax
push eax
mov ecx, ebp
call fcn.004e61c0
mov edi, dword [edi + 4]
test edi, edi
jne 0x514400
mov ecx, dword [esi + 0x28]
mov ebp, dword [esp + 0x14]
xor eax, eax
mov ax, word [ecx + 0x3c]
test ax, ax
je 0x514449
push eax
push esi
mov ecx, ebp
call fcn.0054a4e0
mov eax, dword [ebp + 0xa0]
test eax, eax
jne 0x51446c
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 0x51446c
mov dword [ebp + 0xa0], esi
mov ecx, dword [ebp + 0x2c]
mov edi, dword [ecx + 8]
cmp word [edi + 0x32], 0
je 0x5144ad
cmp word [edi + 0x36], 0
je 0x5144ad
cmp word [edi + 0x34], 0
je 0x5144ad
mov edx, dword [esi]
mov ecx, esi
call dword [edx + 0x3c]
cmp word [edi + 0x32], ax
jne 0x5144ad
test byte [esi + 0x8c], 2
jne 0x5144ad
mov eax, dword [esi + 0x28]
cmp word [eax + 4], 0
jne 0x5144ad
mov dword [ebp + 0xa4], esi
mov eax, dword [esi + 0x7c]
test eax, eax
jne 0x5144b7
mov dword [esi + 0x7c], ebx
test byte [esi + 0x8c], 2
je 0x5144c7
or byte [esi + 0x8a], 2
mov eax, dword [esi + 0x80]
cmp eax, 3
je 0x5144dc
cmp eax, 4
je 0x5144dc
cmp eax, 5
jne 0x514516
mov ecx, dword [esi + 0x34]
push esi
call fcn.0055efe0
mov ebp, eax
test ebp, ebp
je 0x514516
mov ecx, 0x14
call fcn.004dc530
mov edi, eax
test edi, edi
je 0x514511
mov ecx, dword [esi + 0x80]
push ecx
mov ecx, edi
call fcn.004f60c0
mov dword [edi + 0xc], ebp
mov dword [edi + 0x10], ebp
jmp 0x514513
xor edi, edi
mov dword [esi + 0x44], edi
mov eax, dword [esp + 0x2c]
cmp dword [eax + 0xc], 0x4e
je 0x514580
mov dx, word [0x759772]
mov ecx, dword [esp + 0x18]
mov word [esp + 0x2c], dx
cmp dword [ecx + 0x60], 0xfffffff3
jne 0x514556
mov edx, dword [esi + 0x28]
xor ecx, ecx
mov cx, word [edx + 0x26]
test cx, cx
je 0x514556
mov edx, dword [esp + 0x2c]
push eax
mov eax, dword [esp + 0x38]
push eax
push esi
call fcn.005168b0
jmp 0x51457d
mov ecx, dword [esi + 0x28]
movzx ecx, word [ecx + 0x24]
test cx, cx
mov edx, dword [esp + 0x34]
push eax
je 0x514574
push edx
mov edx, dword [esp + 0x34]
push esi
call fcn.005168b0
jmp 0x51457d
mov ecx, dword [esp + 0x30]
call fcn.00516830
mov dword [esi + 0x50], eax
test byte [esi + 0x8b], 4
pop ebp
jne 0x5145d7
mov eax, dword [esi + 0x28]
cmp word [eax + 0x40], 0
je 0x5145d7
call fcn.005109a0
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.005113e0
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.00510990
mov eax, dword [esp + 0x1c]
test eax, eax
pop edi
pop esi
pop ebx
je 0x5145f1
mov ecx, dword [esp + 0x24]
push ecx
mov ecx, dword [esp + 0x18]
push eax
call fcn.0054c0a0
add esp, 0x18
ret 0xc