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

Disassembly:
sub esp, 0x28
push ebx
push ebp
push esi
mov esi, dword [esp + 0x3c]
push edi
mov eax, dword [esi]
mov ecx, dword [eax + 8]
mov eax, dword [ecx + 8]
push eax
call dword [eax + 0x20]
mov edx, dword [esi]
mov dword [esp + 0x14], eax
xor ebx, ebx
add esp, 4
mov eax, dword [edx + 4]
mov ecx, dword [eax + 8]
cmp dword [ecx + 0x20], ebx
jle 0x4a521a
push 0x2f
push eax
call dword [eax + 0x74]
add esp, 8
test al, al
je 0x4a521a
mov eax, dword [esp + 0x3c]
xor ecx, ecx
mov edx, eax
pop edi
pop esi
pop ebp
mov dword [edx], ecx
mov ecx, dword [esp + 0xc]
pop ebx
mov dword [edx + 4], ecx
mov ecx, dword [esp + 0xc]
mov dword [edx + 8], ecx
add esp, 0x28
ret
mov edx, dword [esi]
push 1
mov eax, dword [edx + 8]
push eax
call dword [eax + 0x14]
mov ebp, eax
mov eax, dword [esi + 0x1a8]
push eax
call dword [eax + 0x10]
mov dword [esp + 0x4c], eax
mov eax, dword [esi]
push 1
mov ecx, dword [eax + 8]
mov eax, dword [ecx + 8]
push eax
call dword [eax + 0x18]
add esp, 0x14
cmp eax, 8
jl 0x4a5250
cmp eax, 0xa
jle 0x4a5282
cmp eax, 0x1d
je 0x4a5282
cmp eax, 0x2f
je 0x4a5282
cmp eax, 0x77
je 0x4a5282
cmp eax, 0x8e
jl 0x4a526d
cmp eax, 0x8f
jle 0x4a5282
cmp eax, 0x64
jne 0x4a5309
cmp dword [0x61977c], ebx
jle 0x4a5399
mov eax, 1
dec eax
je 0x4a5406
dec eax
jne 0x4a5490
mov eax, dword [esi]
push 0
push 0x5dcc78
mov ecx, dword [eax + 4]
mov edx, dword [ecx + 8]
mov eax, dword [edx + 0xc]
push eax
call dword [eax + 0x14]
lea eax, [esp + 0x2c]
push esi
push eax
call fcn.00496ab0
mov ecx, dword [eax]
mov dword [esp + 0x28], ecx
mov edx, dword [eax + 4]
mov dword [esp + 0x2c], edx
mov edi, dword [eax + 8]
mov eax, dword [esi]
mov ecx, dword [eax + 4]
mov edx, dword [ecx + 8]
mov eax, dword [edx + 0xc]
push eax
call dword [eax + 0xc]
mov eax, dword [esi]
add esp, 0x18
mov ecx, dword [eax + 4]
mov eax, dword [ecx + 8]
cmp byte [eax], 1
je 0x4a5722
cmp byte [eax + 0x18], 1
jne 0x4a55a2
mov eax, dword [esp + 0x3c]
pop edi
mov edx, eax
pop esi
mov dword [edx], ebp
mov dword [edx + 4], ebp
pop ebp
mov dword [edx + 8], ebx
pop ebx
add esp, 0x28
ret
cmp eax, 4
jl 0x4a5317
cmp eax, 7
jle 0x4a5282
cmp eax, 0xf
je 0x4a5282
cmp eax, 0x15
jl 0x4a532e
cmp eax, 0x18
jle 0x4a5282
cmp eax, 0x1a
je 0x4a5282
cmp eax, 0x2e
je 0x4a5282
cmp eax, 0x8a
jl 0x4a5352
cmp eax, 0x8b
jle 0x4a5282
cmp eax, 0xb
je 0x4a53fc
cmp eax, 0xd
je 0x4a53fc
cmp eax, 0x10
je 0x4a53fc
cmp eax, 0x23
jl 0x4a537b
cmp eax, 0x24
jle 0x4a53fc
cmp eax, 0x29
je 0x4a53fc
cmp eax, 0x2b
je 0x4a53fc
cmp eax, 0x31
je 0x4a53fc
cmp eax, 0x33
je 0x4a53fc
cmp eax, 0x42
jl 0x4a5399
cmp eax, 0x43
jle 0x4a53fc
mov edx, dword [esi]
mov eax, dword [edx + 4]
mov ecx, dword [eax + 8]
cmp dword [ecx + 0x20], ebx
jg 0x4a57f5
push eax
call dword [eax + 0x88]
mov edx, dword [esi]
add esp, 4
mov eax, dword [edx + 4]
mov ecx, dword [eax + 8]
mov edx, dword [ecx + 4]
mov dword [edx], 3
mov eax, dword [esi]
mov ecx, dword [eax + 4]
mov edx, dword [ecx + 8]
mov eax, dword [edx + 4]
mov dword [eax + 8], 0x5e2540
mov ecx, dword [esi]
mov edx, dword [ecx + 4]
mov eax, dword [edx + 8]
mov ecx, dword [eax + 4]
mov dword [ecx + 0x34], 0x57
mov edx, dword [esi]
mov eax, dword [edx + 4]
mov ecx, dword [eax + 8]
mov edx, dword [ecx + 4]
mov dword [edx + 0x38], ebx
jmp 0x4a5722
mov eax, 2
jmp 0x4a5287
mov edx, dword [esi]
push 0
push 0x5dcc60
mov eax, dword [edx + 4]
mov ecx, dword [eax + 8]
mov eax, dword [ecx + 0xc]
push eax
call dword [eax + 0x14]
lea edx, [esp + 0x38]
push esi
push edx
call fcn.00496260
mov ecx, dword [eax]
mov dword [esp + 0x28], ecx
mov edx, dword [eax + 4]
mov dword [esp + 0x2c], edx
mov edi, dword [eax + 8]
mov eax, dword [esi]
mov ecx, dword [eax + 4]
mov edx, dword [ecx + 8]
mov eax, dword [edx + 0xc]
push eax
call dword [eax + 0xc]
mov eax, dword [esi]
add esp, 0x18
mov ecx, dword [eax + 4]
mov eax, dword [ecx + 8]
cmp byte [eax], 1
je 0x4a5722
cmp byte [eax + 0x18], 1
jne 0x4a5476
mov eax, dword [esp + 0x3c]
pop edi
mov edx, eax
pop esi
mov dword [edx], ebp
mov dword [edx + 4], ebp
pop ebp
mov dword [edx + 8], ebx
pop ebx
add esp, 0x28
ret
mov ecx, dword [eax + 0x20]
test ecx, ecx
jne 0x4a5490
mov ecx, dword [esp + 0x40]
mov eax, dword [esi + 0x1a8]
push edi
push ecx
push eax
call dword [eax + 0x1c]
add esp, 0xc
mov edx, dword [esi]
push 1
mov edi, 2
mov eax, dword [edx + 8]
mov eax, dword [eax + 8]
push eax
call dword [eax + 0x18]
add esp, 8
cmp eax, 0x68
jne 0x4a54b0
mov edi, 1
dec edi
jne 0x4a5722
mov ecx, dword [esi]
push str.Code_too_clever
push 0x68
mov eax, dword [ecx + 4]
push eax
call dword [eax + 0x10]
mov eax, dword [esi]
add esp, 0xc
mov edx, dword [eax + 4]
mov ecx, dword [edx + 8]
cmp byte [ecx], 1
je 0x4a5722
cmp byte [ecx + 0x18], 1
je 0x4a57f9
mov eax, dword [eax + 8]
push 1
mov eax, dword [eax + 8]
push eax
call dword [eax + 0x18]
add esp, 8
cmp eax, 8
jl 0x4a54fe
cmp eax, 0xa
jle 0x4a5531
cmp eax, 0x1d
je 0x4a5531
cmp eax, 0x2f
je 0x4a5531
cmp eax, 0x77
je 0x4a5531
cmp eax, 0x8e
jl 0x4a551b
cmp eax, 0x8f
jle 0x4a5531
cmp eax, 0x64
jne 0x4a55b2
mov eax, dword [0x61977c]
test eax, eax
jle 0x4a56be
mov eax, 1
dec eax
je 0x4a5644
dec eax
jne 0x4a5490
mov ecx, dword [esi]
push 0
push 0x5dccc8
mov edx, dword [ecx + 4]
mov eax, dword [edx + 8]
mov eax, dword [eax + 0xc]
push eax
call dword [eax + 0x14]
lea ecx, [esp + 0x38]
push esi
push ecx
call fcn.00496ab0
mov edx, dword [eax]
mov dword [esp + 0x28], edx
mov edx, dword [esi]
mov ecx, dword [eax + 4]
mov dword [esp + 0x2c], ecx
mov edi, dword [eax + 8]
mov eax, dword [edx + 4]
mov ecx, dword [eax + 8]
mov eax, dword [ecx + 0xc]
push eax
call dword [eax + 0xc]
mov edx, dword [esi]
add esp, 0x18
mov eax, dword [edx + 4]
mov eax, dword [eax + 8]
cmp byte [eax], 1
je 0x4a5722
cmp byte [eax + 0x18], 1
je 0x4a57f9
mov ecx, dword [eax + 0x20]
test ecx, ecx
jne 0x4a5490
jmp 0x4a547d
cmp eax, 4
jl 0x4a55c0
cmp eax, 7
jle 0x4a5531
cmp eax, 0xf
je 0x4a5531
cmp eax, 0x15
jl 0x4a55d7
cmp eax, 0x18
jle 0x4a5531
cmp eax, 0x1a
je 0x4a5531
cmp eax, 0x2e
je 0x4a5531
cmp eax, 0x8a
jl 0x4a55fb
cmp eax, 0x8b
jle 0x4a5531
cmp eax, 0xb
je 0x4a563a
cmp eax, 0xd
je 0x4a563a
cmp eax, 0x10
je 0x4a563a
cmp eax, 0x23
jl 0x4a5614
cmp eax, 0x24
jle 0x4a563a
cmp eax, 0x29
je 0x4a563a
cmp eax, 0x2b
je 0x4a563a
cmp eax, 0x31
je 0x4a563a
cmp eax, 0x33
je 0x4a563a
cmp eax, 0x42
jl 0x4a56be
cmp eax, 0x43
jg 0x4a56be
mov eax, 2
jmp 0x4a5536
mov edx, dword [esi]
push 0
push 0x5dccb0
mov eax, dword [edx + 4]
mov ecx, dword [eax + 8]
mov eax, dword [ecx + 0xc]
push eax
call dword [eax + 0x14]
lea edx, [esp + 0x2c]
push esi
push edx
call fcn.00496260
mov ecx, dword [eax]
mov dword [esp + 0x28], ecx
mov edx, dword [eax + 4]
mov dword [esp + 0x2c], edx
mov edi, dword [eax + 8]
mov eax, dword [esi]
mov ecx, dword [eax + 4]
mov edx, dword [ecx + 8]
mov eax, dword [edx + 0xc]
push eax
call dword [eax + 0xc]
mov eax, dword [esi]
add esp, 0x18
mov ecx, dword [eax + 4]
mov eax, dword [ecx + 8]
cmp byte [eax], 1
je 0x4a5722
cmp byte [eax + 0x18], 1
je 0x4a57f9
mov ecx, dword [eax + 0x20]
test ecx, ecx
jne 0x4a5490
mov edx, dword [esp + 0x40]
mov eax, dword [esi + 0x1a8]
push edi
push edx
jmp 0x4a5489
mov edx, dword [esi]
mov eax, dword [edx + 4]
mov ecx, dword [eax + 8]
mov edx, dword [ecx + 0x20]
test edx, edx
jg 0x4a57f5
push eax
call dword [eax + 0x88]
mov edx, dword [esi]
add esp, 4
mov eax, dword [edx + 4]
mov ecx, dword [eax + 8]
mov edx, dword [ecx + 4]
mov dword [edx], 3
mov eax, dword [esi]
mov ecx, dword [eax + 4]
mov edx, dword [ecx + 8]
mov eax, dword [edx + 4]
mov dword [eax + 8], 0x5e2540
mov ecx, dword [esi]
mov edx, dword [ecx + 4]
mov eax, dword [edx + 8]
mov ecx, dword [eax + 4]
mov dword [ecx + 0x34], 0x58
mov edx, dword [esi]
mov eax, dword [edx + 4]
mov ecx, dword [eax + 8]
mov edx, dword [ecx + 4]
mov dword [edx + 0x38], 0
mov edx, dword [esi]
push 0xffffffffffffffff
mov eax, dword [edx + 8]
push eax
call dword [eax + 0x14]
mov edi, eax
mov eax, dword [esi]
add esp, 8
mov ecx, dword [eax + 4]
mov edx, dword [ecx + 8]
mov ecx, dword [edx + 0x20]
test ecx, ecx
jne 0x4a5770
mov eax, dword [eax + 8]
push 0xffffffffffffffff
push eax
call dword [eax + 0x14]
mov ecx, dword [esp + 0x48]
mov edi, eax
mov eax, dword [esi + 0x1a8]
push ecx
push eax
call dword [eax + 0x38]
mov ebx, eax
mov eax, dword [esi + 0x1a8]
push edi
push ebp
push ebx
push eax
call dword [eax + 0x90]
add esp, 0x20
mov edx, dword [esi]
mov eax, dword [edx + 4]
mov ecx, dword [eax + 8]
cmp byte [ecx], 1
jne 0x4a57c2
push eax
call dword [eax + 0x24]
mov edx, dword [esi]
mov eax, dword [edx + 4]
push eax
call dword [eax + 0x30]
mov eax, dword [esi]
mov ebx, dword [esi + 0x1a8]
add esp, 8
mov ecx, dword [eax + 8]
mov eax, dword [eax + 4]
mov edx, dword [eax + 8]
mov eax, dword [edx + 4]
push eax
push 0xffffffffffffffff
push ecx
call dword [ecx + 0x14]
mov ecx, dword [esi]
add esp, 8
mov edx, dword [ecx + 8]
push eax
mov eax, dword [esi + 0x1a8]
push ebp
push edx
push eax
call dword [ebx + 0x2c]
add esp, 0x14
mov ebx, eax
mov ecx, dword [esi]
mov eax, dword [ecx + 4]
mov edx, dword [eax + 8]
mov ecx, dword [edx + 0x20]
test ecx, ecx
jle 0x4a57df
mov ecx, dword [esp + 0x10]
push ecx
push 0x2f
push eax
call dword [eax + 0x78]
add esp, 0xc
mov eax, dword [esp + 0x3c]
mov edx, eax
mov dword [edx], ebp
mov dword [edx + 4], edi
pop edi
pop esi
pop ebp
mov dword [edx + 8], ebx
pop ebx
add esp, 0x28
ret
mov byte [ecx + 0x18], 1
mov eax, dword [esp + 0x3c]
pop edi
mov ecx, eax
pop esi
mov dword [ecx], ebp
mov dword [ecx + 4], ebp
pop ebp
mov dword [ecx + 8], ebx
pop ebx
add esp, 0x28
ret