Function at 0x4547f1
Capabilities:
Terminate process

Disassembly:
sub esp, 0x28
push ebx
mov eax, edx
push ebp
push esi
push edi
mov edi, ecx
mov dword [esp + 0x18], eax
mov ecx, dword [eax + 0x40]
mov dword [esp + 0x30], ecx
mov dword [esp + 0x20], edi
mov esi, dword [edi + 0x2c]
movzx eax, word [ecx + 0x2a]
mov edx, dword [ecx + 0x20]
movzx ecx, word [ecx + 0x18]
mov ebx, dword [edi + 8]
lea ebp, [esi + 1]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x40]
add eax, ecx
mov dword [esp + 0x28], ecx
mov ecx, dword [edi]
mov dword [esp + 0x34], eax
add eax, esi
mov dword [esp + 0x24], ebx
mov dword [edi + 0x2c], eax
call fcn.004421a3
mov ecx, dword [edi]
mov edx, eax
call fcn.0040b4a1
mov edi, eax
xor esi, esi
mov eax, dword [esp + 0x14]
mov dword [esp + 0x2c], edi
test ax, ax
je 0x454901
mov eax, dword [esp + 0x18]
mov ecx, ebx
cmp dword [esp + 0x3c], esi
mov eax, dword [eax + 8]
push eax
push 0x24
pop edx
mov dword [esp + 0x44], eax
push 0x20
pop eax
cmovne edx, eax
call fcn.00421e06
pop ecx
push esi
push esi
push esi
push 0xb
pop edx
mov ecx, ebx
call fcn.00421dad
add esp, 0xc
mov esi, eax
mov eax, dword [esp + 0x14]
mov ecx, ebx
cmp dword [esp + 0x3c], 0
movzx eax, ax
push eax
push ebp
push 0
push dword [esp + 0x4c]
mov dword [esp + 0x2c], eax
push 0x19
pop edx
push 0x16
pop eax
cmovne edx, eax
call fcn.00422013
mov ecx, dword [esp + 0x28]
add esp, 0x10
mov edx, esi
mov dword [ecx + 0x14], eax
mov ecx, ebx
call fcn.00422510
mov ecx, dword [ebx + 0x6c]
xor esi, esi
mov dword [eax + 8], ecx
cmp dword [esp + 0x1c], esi
jbe 0x4548fd
mov edi, dword [esp + 0x40]
lea eax, [esi + ebp]
mov ecx, ebx
push eax
push esi
push edi
push 0x5a
pop edx
call fcn.00421dad
add esp, 0xc
inc esi
cmp esi, dword [esp + 0x1c]
jl 0x4548df
mov edi, dword [esp + 0x2c]
mov eax, dword [esp + 0x14]
movzx esi, ax
cmp esi, dword [esp + 0x28]
jae 0x4549ff
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x20]
mov eax, dword [eax + 0x30]
mov ebx, dword [eax + esi*4]
lea eax, [esi + ebp]
push eax
push dword [esp + 0x40]
mov edx, ebx
push esi
push dword [esp + 0x24]
call fcn.00454428
lea ecx, [esi + ebp]
mov dword [esp + 0x50], eax
add esp, 0x10
cmp eax, ecx
je 0x454969
cmp dword [esp + 0x34], 1
jne 0x454956
mov ecx, dword [esp + 0x20]
mov edx, ebp
call fcn.004352b0
mov ebp, dword [esp + 0x40]
jmp 0x454969
push 0
push ecx
mov ecx, dword [esp + 0x2c]
push eax
push 0x4f
pop edx
call fcn.00421dad
add esp, 0xc
movzx eax, word [ebx + 0xc]
test al, 1
je 0x454981
mov eax, dword [ebx]
mov ecx, 0x800
test dword [eax + 4], ecx
je 0x4549f4
test edi, edi
jmp 0x4549ee
test eax, 0x100
jne 0x4549f4
mov eax, dword [ebx]
mov ecx, 0x800
mov eax, dword [eax + 0x10]
mov dword [esp + 0x40], eax
test word [ebx + 0xa], cx
jne 0x4549c7
mov ecx, eax
call fcn.0043183c
test eax, eax
je 0x4549c3
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x24]
push 0
push dword [eax + 0xc]
lea eax, [esi + ebp]
push eax
push 0x32
pop edx
call fcn.00421dad
add esp, 0xc
mov eax, dword [esp + 0x40]
test edi, edi
je 0x4549f4
mov dl, byte [esi + edi]
mov ecx, eax
call fcn.004300c8
cmp al, 0x41
jne 0x4549e0
mov byte [esi + edi], al
mov dl, al
jmp 0x4549e3
mov dl, byte [esi + edi]
mov ecx, dword [esp + 0x40]
call fcn.0043189d
test eax, eax
je 0x4549f4
mov byte [esi + edi], 0x41
inc esi
cmp esi, dword [esp + 0x28]
jl 0x45490e
mov eax, dword [esp + 0x44]
mov dword [eax], edi
mov eax, ebp
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x28
ret