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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x6c
push ebx
mov eax, edx
mov edx, ecx
mov dword [esp + 0x18], eax
mov dword [esp + 0x14], edx
push esi
push edi
test eax, eax
je 0x45f90f
mov ebx, dword [ebp + 0x10]
xor eax, eax
cmp dword [ebx + 0x1c], eax
jne 0x45f82d
cmp byte [ebx + 0xc], al
jne 0x45f7c5
mov byte [ebx + 0xc], 1
cmp dword [ebx + 4], eax
je 0x45f7c5
push dword [ebx + 4]
lea ecx, [esp + 0x50]
mov byte [esp + 0x13], al
push dword [ebx]
call fcn.0044e3ef
mov edi, dword [ebx]
xor edx, edx
mov esi, edx
mov dword [esp + 0x10], edx
mov eax, edx
mov dword [esp + 0x40], edx
mov dword [esp + 0x44], edx
mov dword [esp + 0x48], edx
mov dword [esp + 0x14], edx
mov byte [esp + 0x18], dl
mov dword [esp + 0x34], esi
mov dword [esp + 0x38], edx
mov dword [esp + 0x3c], edx
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], edx
mov dword [esp + 0x30], edx
cmp word [edi], dx
je 0x45f763
jmp 0x45f2ed
mov eax, dword [esp + 0x28]
mov dword [esp + 0x38], edx
test esi, esi
je 0x45f2fa
xor ecx, ecx
mov word [esi], cx
mov dword [esp + 0x2c], edx
test eax, eax
je 0x45f307
xor ecx, ecx
mov word [eax], cx
movzx eax, word [edi]
mov edx, eax
test ax, ax
je 0x45f336
push 0x20
mov ecx, eax
pop ebx
movzx edx, cx
cmp cx, bx
ja 0x45f333
push edi
call dword [sym.imp.USER32.dll_CharNextW]
mov edi, eax
movzx eax, word [edi]
mov ecx, eax
mov edx, eax
test ax, ax
jne 0x45f316
mov ebx, dword [ebp + 0x10]
movzx ecx, dx
test dx, dx
je 0x45f390
push 0x20
movzx edx, dx
pop ebx
push 0x3d
pop eax
movzx ecx, dx
cmp dx, ax
je 0x45f389
movzx ecx, dx
cmp dx, bx
jbe 0x45f389
push edi
call dword [sym.imp.USER32.dll_CharNextW]
mov esi, eax
jmp 0x45f379
mov dword [esp + 0x24], eax
lea ecx, [esp + 0x34]
push 1
lea eax, [esp + 0x28]
push eax
call fcn.0044e44f
add edi, 2
movzx eax, word [edi]
cmp edi, esi
jb 0x45f362
mov edx, eax
mov ecx, eax
test ax, ax
jne 0x45f344
mov ebx, dword [ebp + 0x10]
mov esi, dword [esp + 0x34]
movzx edx, cx
test cx, cx
je 0x45f3be
push 0x20
movzx ecx, cx
pop ebx
movzx edx, cx
cmp cx, bx
ja 0x45f3bb
push edi
call dword [sym.imp.USER32.dll_CharNextW]
mov edi, eax
movzx eax, word [edi]
mov ecx, eax
mov edx, eax
test ax, ax
jne 0x45f39e
mov ebx, dword [ebp + 0x10]
push 0x3d
pop eax
add edi, 2
cmp dx, ax
jne 0x45f75f
movzx eax, word [edi]
mov ecx, eax
test ax, ax
je 0x45f3fc
push 0x20
mov edx, eax
pop ebx
movzx ecx, dx
cmp dx, bx
ja 0x45f3f9
push edi
call dword [sym.imp.USER32.dll_CharNextW]
mov edi, eax
movzx eax, word [edi]
mov edx, eax
mov ecx, eax
test ax, ax
jne 0x45f3dc
mov ebx, dword [ebp + 0x10]
push 0x27
pop eax
add edi, 2
cmp cx, ax
jne 0x45f75f
movzx eax, word [edi]
mov edx, eax
test ax, ax
je 0x45f464
push 0x27
mov ecx, eax
pop esi
movzx edx, cx
cmp cx, si
je 0x45f45d
push edi
call dword [sym.imp.USER32.dll_CharNextW]
mov dword [esp + 0x24], eax
cmp edi, eax
jae 0x45f451
mov ebx, eax
movzx eax, word [edi]
lea ecx, [esp + 0x28]
mov dword [esp + 0x24], eax
lea eax, [esp + 0x24]
push 1
push eax
call fcn.0044e44f
add edi, 2
cmp edi, ebx
jb 0x45f433
movzx eax, word [edi]
mov ecx, eax
mov edx, eax
test ax, ax
jne 0x45f41a
mov ebx, dword [ebp + 0x10]
mov esi, dword [esp + 0x34]
push 0x27
pop eax
cmp dx, ax
jne 0x45f75f
cmp dword [esp + 0x2c], 0
je 0x45f741
push 0x498478
push esi
call dword [sym.imp.SHLWAPI.dll_StrCmpW]
test eax, eax
jne 0x45f491
lea ecx, [esp + 0x4c]
jmp 0x45f4bc
push 0x49b704
push esi
call dword [sym.imp.SHLWAPI.dll_StrCmpW]
test eax, eax
jne 0x45f4a8
mov byte [esp + 0xf], 1
jmp 0x45f48b
push str.restype
push esi
call dword [sym.imp.SHLWAPI.dll_StrCmpW]
test eax, eax
jne 0x45f4ca
lea ecx, [esp + 0x40]
push dword [esp + 0x28]
call fcn.0044e4c5
jmp 0x45f741
push str.dest
push esi
call dword [sym.imp.SHLWAPI.dll_StrCmpW]
test eax, eax
jne 0x45f54f
push 0xa
lea eax, [esp + 0x14]
push eax
push dword [esp + 0x30]
call dword [sym.imp.msvcrt.dll_wcstol]
add esp, 0xc
mov dword [ebx + 0x20], eax
lea eax, [esp + 0x10]
push 0xa
push eax
mov eax, dword [esp + 0x18]
add eax, 2
push eax
call dword [sym.imp.msvcrt.dll_wcstol]
add esp, 0xc
mov dword [ebx + 0x24], eax
lea eax, [esp + 0x10]
push 0xa
push eax
mov eax, dword [esp + 0x18]
add eax, 2
push eax
call dword [sym.imp.msvcrt.dll_wcstol]
add esp, 0xc
mov dword [ebx + 0x28], eax
lea eax, [esp + 0x10]
push 0xa
push eax
mov eax, dword [esp + 0x18]
add eax, 2
push eax
call dword [sym.imp.msvcrt.dll_wcstol]
add esp, 0xc
mov dword [ebx + 0x2c], eax
lea ecx, [ebx + 0x20]
call fcn.00457e98
jmp 0x45f741
push str.source
push esi
call dword [sym.imp.SHLWAPI.dll_StrCmpW]
test eax, eax
jne 0x45f5c2
mov esi, dword [sym.imp.msvcrt.dll_wcstol]
lea eax, [esp + 0x10]
push 0xa
push eax
push dword [esp + 0x30]
call esi
add esp, 0xc
mov dword [ebx + 0x30], eax
lea eax, [esp + 0x10]
push 0xa
push eax
mov eax, dword [esp + 0x18]
add eax, 2
push eax
call esi
add esp, 0xc
mov dword [ebx + 0x34], eax
lea eax, [esp + 0x10]
push 0xa
push eax
mov eax, dword [esp + 0x18]
add eax, 2
push eax
call esi
add esp, 0xc
mov dword [ebx + 0x38], eax
lea eax, [esp + 0x10]
push 0xa
push eax
mov eax, dword [esp + 0x18]
add eax, 2
push eax
call esi
add esp, 0xc
mov dword [ebx + 0x3c], eax
jmp 0x45f741
push str.corner
push esi
call dword [sym.imp.SHLWAPI.dll_StrCmpW]
test eax, eax
jne 0x45f635
mov esi, dword [sym.imp.msvcrt.dll_wcstol]
lea eax, [esp + 0x10]
push 0xa
push eax
push dword [esp + 0x30]
call esi
add esp, 0xc
mov dword [ebx + 0x40], eax
lea eax, [esp + 0x10]
push 0xa
push eax
mov eax, dword [esp + 0x18]
add eax, 2
push eax
call esi
add esp, 0xc
mov dword [ebx + 0x44], eax
lea eax, [esp + 0x10]
push 0xa
push eax
mov eax, dword [esp + 0x18]
add eax, 2
push eax
call esi
add esp, 0xc
mov dword [ebx + 0x48], eax
lea eax, [esp + 0x10]
push 0xa
push eax
mov eax, dword [esp + 0x18]
add eax, 2
push eax
call esi
add esp, 0xc
mov dword [ebx + 0x4c], eax
jmp 0x45f741
push str.mask
push esi
call dword [sym.imp.SHLWAPI.dll_StrCmpW]
test eax, eax
jne 0x45f66c
mov eax, dword [esp + 0x28]
lea ecx, [esp + 0x10]
push 0x10
push ecx
cmp word [eax], 0x23
jne 0x45f659
add eax, 2
push eax
call dword [sym.imp.msvcrt.dll_wcstoul]
add esp, 0xc
mov dword [esp + 0x14], eax
jmp 0x45f741
push str.fade
push esi
call dword [sym.imp.SHLWAPI.dll_StrCmpW]
test eax, eax
jne 0x45f698
push 0xa
lea eax, [esp + 0x14]
push eax
push dword [esp + 0x30]
call dword [sym.imp.msvcrt.dll_wcstoul]
add esp, 0xc
mov byte [ebx + 0x50], al
jmp 0x45f741
push str.hole
push esi
call dword [sym.imp.SHLWAPI.dll_StrCmpW]
test eax, eax
jne 0x45f6c2
push str.true
push dword [esp + 0x2c]
call dword [sym.imp.msvcrt.dll_wcscmp]
neg eax
sbb al, al
inc al
mov byte [ebx + 0x51], al
jmp 0x45f73f
push str.xtiled
push esi
call dword [sym.imp.SHLWAPI.dll_StrCmpW]
test eax, eax
jne 0x45f6ec
push str.true
push dword [esp + 0x2c]
call dword [sym.imp.msvcrt.dll_wcscmp]
neg eax
sbb al, al
inc al
mov byte [ebx + 0x52], al
jmp 0x45f73f
push str.ytiled
push esi
call dword [sym.imp.SHLWAPI.dll_StrCmpW]
test eax, eax
jne 0x45f716
push str.true
push dword [esp + 0x2c]
call dword [sym.imp.msvcrt.dll_wcscmp]
neg eax
sbb al, al
inc al
mov byte [ebx + 0x53], al
jmp 0x45f73f
push 0x49b760
push esi
call dword [sym.imp.SHLWAPI.dll_StrCmpW]
test eax, eax
jne 0x45f741
push str.true
push dword [esp + 0x2c]
call dword [sym.imp.msvcrt.dll_wcscmp]
neg eax
sbb al, al
inc al
mov byte [esp + 0x20], al
pop ecx
pop ecx
movzx eax, word [edi + 2]
add edi, 4
push 0x20
pop ecx
cmp ax, cx
jne 0x45f75f
mov esi, dword [esp + 0x34]
xor edx, edx
cmp word [edi], dx
jne 0x45f2e9
mov esi, dword [esp + 0x34]
mov edi, dword [esp + 0x4c]
lea ecx, [ebx + 0x10]
push edi
call fcn.0044e4c5
cmp byte [esp + 0xf], 0
push dword [esp + 0x18]
mov ecx, dword [esp + 0x24]
push dword [esp + 0x18]
jne 0x45f787
push 0
jmp 0x45f78b
push dword [esp + 0x48]
push edi
call fcn.00457c64
mov ecx, eax
test ecx, ecx
jne 0x45f7cc
mov eax, dword [esp + 0x28]
mov ebx, dword [sym.imp.msvcrt.dll_free]
test eax, eax
je 0x45f7a9
push eax
call ebx
pop ecx
test esi, esi
je 0x45f7b1
push esi
call ebx
pop ecx
mov eax, dword [esp + 0x40]
test eax, eax
je 0x45f7bd
push eax
call ebx
pop ecx
test edi, edi
je 0x45f7c5
push edi
call ebx
pop ecx
xor al, al
jmp 0x45f911
xor eax, eax
mov dword [ebx + 0x1c], ecx
cmp dword [ebx + 0x30], eax
jne 0x45f7f1
cmp dword [ebx + 0x38], eax
jne 0x45f7f1
cmp dword [ebx + 0x34], eax
jne 0x45f7f1
cmp dword [ebx + 0x3c], eax
jne 0x45f7f1
mov eax, dword [ecx + 0xc]
mov dword [ebx + 0x38], eax
mov eax, dword [ecx + 0x10]
mov dword [ebx + 0x3c], eax
mov eax, dword [esp + 0x28]
test eax, eax
je 0x45f801
push eax
call dword [sym.imp.msvcrt.dll_free]
pop ecx
test esi, esi
je 0x45f80d
push esi
call dword [sym.imp.msvcrt.dll_free]
pop ecx
mov eax, dword [esp + 0x40]
test eax, eax
je 0x45f81d
push eax
call dword [sym.imp.msvcrt.dll_free]
pop ecx
test edi, edi
je 0x45f829
push edi
call dword [sym.imp.msvcrt.dll_free]
pop ecx
mov edx, dword [esp + 0x1c]
mov ecx, dword [ebx + 0x1c]
mov eax, dword [ecx + 0xc]
cmp dword [ebx + 0x38], eax
jle 0x45f83b
mov dword [ebx + 0x38], eax
mov eax, dword [ecx + 0x10]
cmp dword [ebx + 0x3c], eax
jle 0x45f846
mov dword [ebx + 0x3c], eax
test edx, edx
je 0x45f90f
mov edx, dword [ebp + 8]
lea edi, [esp + 0x58]
mov eax, dword [ebx + 0x20]
mov esi, edx
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
test eax, eax
jne 0x45f871
cmp dword [ebx + 0x24], eax
jne 0x45f871
cmp dword [ebx + 0x28], eax
jne 0x45f871
cmp dword [ebx + 0x2c], eax
je 0x45f8ab
add eax, dword [edx]
mov esi, dword [edx + 4]
mov ecx, dword [edx + 8]
mov dword [esp + 0x58], eax
mov eax, dword [ebx + 0x24]
add eax, esi
mov dword [esp + 0x5c], eax
mov eax, dword [ebx + 0x28]
add eax, dword [edx]
mov dword [esp + 0x60], eax
cmp eax, ecx
jle 0x45f897
mov dword [esp + 0x60], ecx
mov eax, dword [ebx + 0x2c]
mov ecx, dword [edx + 0xc]
add eax, esi
mov dword [esp + 0x64], eax
cmp eax, ecx
jle 0x45f8ab
mov dword [esp + 0x64], ecx
mov esi, dword [sym.imp.USER32.dll_IntersectRect]
lea eax, [esp + 0x58]
push edx
push eax
lea eax, [esp + 0x70]
push eax
call esi
test eax, eax
je 0x45f90f
push dword [ebp + 0xc]
lea eax, [esp + 0x5c]
push eax
lea eax, [esp + 0x70]
push eax
call esi
test eax, eax
je 0x45f90f
movzx eax, byte [ebx + 0x53]
lea ecx, [ebx + 0x30]
mov edx, dword [ebx + 0x1c]
push eax
movzx eax, byte [ebx + 0x52]
push eax
movzx eax, byte [ebx + 0x51]
push eax
movzx eax, byte [ebx + 0x50]
push eax
movzx eax, byte [edx + 0x14]
mov edx, dword [edx]
push eax
lea eax, [ebx + 0x40]
push eax
push ecx
push dword [ebp + 0xc]
lea ecx, [esp + 0x78]
push ecx
mov ecx, dword [esp + 0x40]
call fcn.0045e2b1
add esp, 0x24
mov al, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret