Function at 0x51c310
Capabilities:
Contain obfuscated stackstrings
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x6223a6
mov eax, dword fs:[0]
push eax
sub esp, 0x150
push ebx
push esi
push edi
mov eax, dword [0x6c4490]
xor eax, esp
push eax
lea eax, [esp + 0x160]
mov dword fs:[0], eax
mov esi, ecx
mov dword [esp + 0x44], esi
mov edi, dword [ebp + 0x14]
xor eax, eax
mov ebx, dword [ebp + 0x10]
mov dword [esp + 0x9c], eax
mov dword [esp + 0x18], eax
lea eax, [edi + 1]
cmp eax, ebx
jne 0x51cdbe
lea eax, [ebx - 1]
push eax
lea eax, [esp + 0x74]
push eax
call fcn.005125d0
add esp, 8
mov dword [esp + 0x168], 0
cmp dword [0x717d7c], 0
jne 0x51c39a
call fcn.00510ca0
mov dword [0x717d7c], 0x506460
push 2
mov dword [esp + 0x34], vtable.CryptoPP::Integer.0
mov dword [esp + 0x3c], 2
call fcn.004f0b70
add esp, 4
push 8
call fcn.004ec290
add esp, 4
mov dword [esp + 0x3c], eax
mov dword [esp + 0x40], 0
mov dword [eax], 1
mov dword [eax + 4], 0
lea eax, [esp + 0xb4]
mov byte [esp + 0x168], 1
push ebx
push eax
call fcn.005125d0
lea ecx, [esp + 0x38]
mov byte [esp + 0x170], 2
push ecx
push eax
lea eax, [esp + 0x94]
push eax
call fcn.004edaa0
add esp, 0x14
mov edx, dword [esp + 0xbc]
xor eax, eax
mov ebx, dword [esp + 0xc0]
mov ecx, edx
mov edi, ebx
rep stosd dword es:[edi], eax
lea eax, [edx*4]
push ebx
cmp eax, 0x10
jb 0x51c435
call fcn.00618fb8
jmp 0x51c43a
call fcn.005e0396
add esp, 4
mov byte [esp + 0x168], 5
xor eax, eax
mov edx, dword [esp + 0x3c]
mov ecx, 2
mov edi, edx
rep stosd dword es:[edi], eax
push edx
call fcn.005e0396
mov eax, dword [ebp + 8]
add esp, 4
mov byte [esp + 0x17], 0
lea edi, [eax*4 + 6]
add edi, eax
mov dword [esp + 0x98], edi
cmp dword [0x717d7c], 0
jne 0x51c48d
call fcn.00510ca0
mov dword [0x717d7c], 0x506460
push 2
mov dword [esp + 0x20], vtable.CryptoPP::Integer.0
mov dword [esp + 0x28], 2
call fcn.004f0b70
add esp, 4
push 8
call fcn.004ec290
mov ebx, eax
mov dword [esp + 0x30], 0
add esp, 4
mov dword [esp + 0x28], ebx
mov dword [ebx], 0xc
mov dword [ebx + 4], 0
mov byte [esp + 0x168], 6
cmp dword [0x717d7c], 0
jne 0x51c4ec
call fcn.00510ca0
mov dword [0x717d7c], 0x506460
push 2
mov dword [esp + 0x34], vtable.CryptoPP::Integer.0
mov dword [esp + 0x3c], 2
call fcn.004f0b70
add esp, 4
push 8
call fcn.004ec290
add esp, 4
mov dword [esp + 0x3c], eax
test edi, edi
js 0x51c522
mov dword [esp + 0x40], 0
jmp 0x51c52c
mov dword [esp + 0x40], 1
neg edi
mov dword [eax], edi
mov dword [eax + 4], 0
lea eax, [esp + 0x1c]
mov byte [esp + 0x168], 7
push eax
lea eax, [esp + 0x34]
mov ecx, esi
push eax
push 0
lea eax, [esp + 0x90]
push eax
lea eax, [esp + 0x80]
push eax
push dword [ebp + 0xc]
call fcn.00513340
mov edx, dword [esp + 0x3c]
xor eax, eax
mov edi, edx
mov ecx, 2
rep stosd dword es:[edi], eax
push edx
call fcn.005e0396
add esp, 4
mov byte [esp + 0x168], 5
xor eax, eax
mov edi, ebx
mov ecx, 2
rep stosd dword es:[edi], eax
push ebx
call fcn.005e0396
add esp, 4
cmp dword [0x717d7c], 0
jne 0x51c5af
call fcn.00510ca0
mov dword [0x717d7c], 0x506460
push 2
mov dword [esp + 0x20], vtable.CryptoPP::Integer.0
mov dword [esp + 0x28], 2
call fcn.004f0b70
add esp, 4
push 8
call fcn.004ec290
add esp, 4
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], 0
mov dword [eax], 0xc
mov dword [eax + 4], 0
mov byte [esp + 0x168], 8
mov edx, dword [esp + 0x8c]
test edx, edx
je 0x51c61b
mov ebx, dword [esp + 0x90]
lea eax, [edx - 1]
lea eax, [ebx + eax*4]
lea esp, [esp]
cmp dword [eax], 0
jne 0x51c673
sub eax, 4
dec edx
jne 0x51c610
xor edx, edx
lea edi, [edx + edx*2]
shl edi, 2
cmp dword [0x717d7c], 0
jne 0x51c63b
call fcn.00510ca0
mov dword [0x717d7c], 0x506460
push 2
mov dword [esp + 0x34], vtable.CryptoPP::Integer.0
mov dword [esp + 0x3c], 2
call fcn.004f0b70
add esp, 4
push 8
call fcn.004ec290
add esp, 4
mov ebx, eax
mov dword [esp + 0x3c], ebx
test edi, edi
js 0x51c6bf
mov dword [esp + 0x40], 0
jmp 0x51c6c9
test edx, edx
je 0x51c61b
mov ebx, dword [ebx + edx*4 - 4]
test ebx, ebx
jne 0x51c68d
dec edx
xor esi, esi
shl edx, 5
add edx, esi
mov esi, dword [esp + 0x44]
jmp 0x51c61d
xor edi, edi
mov esi, 0x20
lea ecx, [edi + esi]
mov eax, ebx
shr ecx, 1
shr eax, cl
test eax, eax
je 0x51c6a5
mov edi, ecx
jmp 0x51c6a7
mov esi, ecx
mov eax, esi
sub eax, edi
cmp eax, 1
ja 0x51c694
dec edx
shl edx, 5
add edx, esi
mov esi, dword [esp + 0x44]
jmp 0x51c61d
mov dword [esp + 0x40], 1
neg edi
mov dword [ebx], edi
mov dword [ebx + 4], 0
lea eax, [esp + 0x30]
mov byte [esp + 0x168], 9
push eax
lea eax, [esp + 0x60]
push esi
push eax
call fcn.004eda70
add esp, 0xc
mov edi, eax
mov byte [esp + 0x168], 0xa
cmp dword [esp + 0x94], 1
je 0x51c71f
cmp dword [edi + 0x10], 1
je 0x51c718
push edi
lea ecx, [esp + 0x88]
call fcn.00515810
mov ecx, eax
jmp 0x51c73b
mov ecx, 1
jmp 0x51c73b
cmp dword [edi + 0x10], 1
je 0x51c72a
or ecx, 0xffffffff
jmp 0x51c73b
push edi
lea ecx, [esp + 0x88]
call fcn.00515810
mov ecx, eax
neg ecx
push dword [ebp + 8]
test ecx, ecx
lea eax, [esp + 0x88]
lea ecx, [esp + 0x20]
push ecx
cmovns eax, edi
lea ecx, [esp + 0x10c]
push eax
push esi
call fcn.0051a740
mov eax, dword [esp + 0x68]
mov edi, eax
mov edx, dword [esp + 0x64]
mov ecx, edx
mov dword [esp + 0x18], eax
xor eax, eax
push dword [esp + 0x18]
rep stosd dword es:[edi], eax
lea eax, [edx*4]
cmp eax, 0x10
jb 0x51c788
call fcn.00618fb8
jmp 0x51c78d
call fcn.005e0396
add esp, 4
xor eax, eax
mov edi, ebx
mov ecx, 2
rep stosd dword es:[edi], eax
push ebx
call fcn.005e0396
add esp, 4
mov byte [esp + 0x168], 0xe
xor eax, eax
mov edx, dword [esp + 0x28]
mov ecx, 2
mov edi, edx
rep stosd dword es:[edi], eax
push edx
call fcn.005e0396
add esp, 4
lea ecx, [esp + 0x104]
push esi
call fcn.0051a800
test al, al
je 0x51ca1c
lea ebx, [esi + 0x14]
lea esp, [esp]
cmp dword [0x717d7c], 0
mov edi, dword [ebp + 8]
mov esi, edi
jne 0x51c7fd
call fcn.00510ca0
mov dword [0x717d7c], 0x506460
push 2
mov dword [esp + 0x34], vtable.CryptoPP::Integer.0
mov dword [esp + 0x3c], 2
call fcn.004f0b70
add esp, 4
push 8
call fcn.004ec290
add esp, 4
mov dword [esp + 0x3c], eax
test edi, edi
js 0x51c833
mov dword [esp + 0x40], 0
jmp 0x51c83d
mov dword [esp + 0x40], 1
neg esi
mov dword [eax], esi
mov dword [eax + 4], 0
lea eax, [esp + 0x30]
mov byte [esp + 0x168], 0xf
push eax
push dword [esp + 0x48]
lea eax, [esp + 0x50]
push eax
call fcn.004edaa0
add esp, 0xc
push 1
lea ecx, [esp + 0x20]
mov byte [esp + 0x16c], 0x10
push ecx
mov ecx, eax
call fcn.00506310
mov esi, eax
mov dword [esp + 0x18], esi
mov byte [esp + 0x168], 0x11
cmp ebx, esi
je 0x51c958
mov ecx, dword [esi + 8]
cmp dword [ebx + 8], ecx
jne 0x51c8a9
mov edx, dword [esi + 0xc]
mov eax, ecx
shr eax, 1
cmp dword [edx + eax*4], 0
jne 0x51c937
mov eax, dword [esi + 0xc]
test ecx, ecx
je 0x51c8c1
lea eax, [eax + ecx*4]
add eax, 0xfffffffc
cmp dword [eax], 0
jne 0x51c8c1
sub eax, 4
dec ecx
jne 0x51c8b6
cmp ecx, 8
ja 0x51c8cf
mov eax, dword [ecx*4 + 0x660878]
jmp 0x51c92e
cmp ecx, 0x10
ja 0x51c8db
mov eax, 0x10
jmp 0x51c92e
cmp ecx, 0x20
ja 0x51c8e7
mov eax, 0x20
jmp 0x51c92e
cmp ecx, 0x40
ja 0x51c8f3
mov eax, 0x40
jmp 0x51c92e
lea edi, [ecx - 1]
test edi, edi
jne 0x51c8fe
xor edx, edx
jmp 0x51c925
xor esi, esi
mov edx, 0x20
lea ecx, [esi + edx]
mov eax, edi
shr ecx, 1
shr eax, cl
test eax, eax
je 0x51c916
mov esi, ecx
jmp 0x51c918
mov edx, ecx
mov eax, edx
sub eax, esi
cmp eax, 1
ja 0x51c905
mov esi, dword [esp + 0x18]
mov eax, 1
mov ecx, edx
shl eax, cl
push eax
lea ecx, [ebx + 4]
call fcn.00516f60
mov ecx, dword [esi + 0xc]
mov edx, dword [ebx + 0xc]
mov eax, dword [ebx + 8]
cmp edx, ecx
je 0x51c952
shl eax, 2
push eax
push ecx
push edx
call fcn.005e3ed0
add esp, 0xc
mov eax, dword [esi + 0x10]
mov dword [ebx + 0x10], eax
mov edx, dword [esp + 0x24]
xor eax, eax
mov esi, dword [esp + 0x28]
mov ecx, edx
mov edi, esi
rep stosd dword es:[edi], eax
lea eax, [edx*4]
push esi
cmp eax, 0x10
jb 0x51c97c
call fcn.00618fb8
jmp 0x51c981
call fcn.005e0396
mov edx, dword [esp + 0x54]
xor eax, eax
mov esi, dword [esp + 0x58]
add esp, 4
mov edi, esi
mov ecx, edx
rep stosd dword es:[edi], eax
lea eax, [edx*4]
push esi
cmp eax, 0x10
jb 0x51c9a8
call fcn.00618fb8
jmp 0x51c9ad
call fcn.005e0396
mov byte [esp + 0x16c], 0xe
add esp, 4
mov edx, dword [esp + 0x3c]
xor eax, eax
mov edi, edx
mov ecx, 2
rep stosd dword es:[edi], eax
push edx
call fcn.005e0396
add esp, 4
mov ecx, ebx
call fcn.0051a660
mov esi, dword [esp + 0x44]
test al, al
je 0x51ca00
mov ecx, esi
call fcn.0051a660
test al, al
je 0x51ca00
mov ecx, ebx
call fcn.0051a440
test al, al
je 0x51ca00
mov ecx, esi
call fcn.0051a440
test al, al
jne 0x51ca17
push esi
lea ecx, [esp + 0x108]
call fcn.0051a800
test al, al
jne 0x51c7e0
jmp 0x51ca1c
mov byte [esp + 0x17], 1
lea ecx, [esp + 0x104]
mov byte [esp + 0x168], 5
call fcn.0051ba30
cmp byte [esp + 0x17], 0
mov edi, dword [esp + 0x98]
je 0x51c475
cmp dword [ebp + 8], 1
lea ecx, [esp + 0x1c]
jne 0x51caf9
push 2
call fcn.00512460
lea eax, [esp + 0x1c]
mov byte [esp + 0x168], 0x12
push eax
lea ecx, [esi + 0x28]
call fcn.00512700
mov byte [esp + 0x168], 5
xor eax, eax
mov edx, dword [esp + 0x24]
mov ecx, edx
mov edi, dword [esp + 0x28]
rep stosd dword es:[edi], eax
lea eax, [edx*4]
cmp eax, 0x10
mov eax, dword [esp + 0x28]
push eax
jb 0x51ca9a
call fcn.00618fb8
jmp 0x51ca9f
call fcn.005e0396
add esp, 4
lea ecx, [esi + 0x28]
mov edx, esi
call fcn.0051bc60
cmp eax, 1
je 0x51cac8
lea ecx, [esi + 0x28]
call fcn.00513fd0
mov edx, esi
lea ecx, [esi + 0x28]
call fcn.0051bc60
cmp eax, 1
jne 0x51cab1
mov edx, dword [esp + 0x8c]
xor eax, eax
mov esi, dword [esp + 0x90]
mov ecx, edx
mov edi, esi
rep stosd dword es:[edi], eax
lea eax, [edx*4]
push esi
cmp eax, 0x10
jb 0x51cd56
call fcn.00618fb8
jmp 0x51cd5b
push 3
call fcn.00512460
lea eax, [esp + 0x1c]
mov byte [esp + 0x168], 0x13
lea ecx, [esi + 0x28]
push eax
call fcn.00512700
mov byte [esp + 0x168], 5
xor eax, eax
mov edx, dword [esp + 0x24]
mov ecx, edx
mov ebx, dword [esp + 0x28]
mov edi, ebx
rep stosd dword es:[edi], eax
lea eax, [edx*4]
push ebx
cmp eax, 0x10
jb 0x51cb41
call fcn.00618fb8
jmp 0x51cb46
call fcn.005e0396
mov ebx, dword [esp + 0xa0]
lea edi, [esi + 0x28]
add esp, 4
push 4
lea ecx, [esp + 0x34]
call fcn.00512460
push edi
lea eax, [esp + 0xa4]
mov byte [esp + 0x16c], 0x14
push edi
or ebx, 1
push eax
mov dword [esp + 0x24], ebx
call fcn.004edad0
add esp, 0xc
lea ecx, [esp + 0x30]
mov dword [esp + 0x168], 0x15
push ecx
push eax
lea eax, [esp + 0x64]
or ebx, 2
push eax
mov dword [esp + 0x24], ebx
call fcn.004edaa0
add esp, 0xc
mov dword [esp + 0x168], 0x16
or ebx, 4
mov edx, esi
mov dword [esp + 0x18], ebx
mov ecx, eax
call fcn.0051bc60
cmp eax, 0xffffffff
jne 0x51cc09
push 2
lea ecx, [esp + 0x20]
call fcn.00512460
push esi
mov dword [esp + 0x16c], 0x17
lea edx, [esi + 0x14]
or ebx, 8
lea ecx, [esp + 0x4c]
push edi
mov dword [esp + 0x20], ebx
call fcn.0051bfb0
lea ecx, [esp + 0x24]
or ebx, 0x10
push ecx
push eax
call fcn.004ed8c0
add esp, 0x10
mov byte [esp + 0x17], 1
test al, al
jne 0x51cc0e
mov byte [esp + 0x17], 0
test bl, 0x10
je 0x51cc49
mov eax, dword [esp + 0x54]
and ebx, 0xffffffef
mov edx, dword [esp + 0x50]
mov edi, eax
mov dword [esp + 0x18], eax
mov ecx, edx
push dword [esp + 0x18]
xor eax, eax
rep stosd dword es:[edi], eax
lea eax, [edx*4]
cmp eax, 0x10
jb 0x51cc41
call fcn.00618fb8
jmp 0x51cc46
call fcn.005e0396
add esp, 4
test bl, 8
je 0x51cc7f
mov edx, dword [esp + 0x24]
xor eax, eax
mov edi, dword [esp + 0x28]
mov ecx, edx
rep stosd dword es:[edi], eax
lea eax, [edx*4]
and ebx, 0xfffffff7
cmp eax, 0x10
mov eax, dword [esp + 0x28]
push eax
jb 0x51cc77
call fcn.00618fb8
jmp 0x51cc7c
call fcn.005e0396
add esp, 4
test bl, 4
je 0x51ccba
mov eax, dword [esp + 0x68]
and ebx, 0xfffffffb
mov edx, dword [esp + 0x64]
mov edi, eax
mov dword [esp + 0x18], eax
mov ecx, edx
push dword [esp + 0x18]
xor eax, eax
rep stosd dword es:[edi], eax
lea eax, [edx*4]
cmp eax, 0x10
jb 0x51ccb2
call fcn.00618fb8
jmp 0x51ccb7
call fcn.005e0396
add esp, 4
test bl, 2
je 0x51ccfb
mov eax, dword [esp + 0xac]
and ebx, 0xfffffffd
mov edx, dword [esp + 0xa8]
mov edi, eax
mov dword [esp + 0x18], eax
mov ecx, edx
push dword [esp + 0x18]
xor eax, eax
rep stosd dword es:[edi], eax
lea eax, [edx*4]
cmp eax, 0x10
jb 0x51ccf3
call fcn.00618fb8
jmp 0x51ccf8
call fcn.005e0396
add esp, 4
mov dword [esp + 0x168], 5
test bl, 1
je 0x51cd3c
mov edx, dword [esp + 0x38]
xor eax, eax
mov edi, dword [esp + 0x3c]
mov ecx, edx
rep stosd dword es:[edi], eax
lea eax, [edx*4]
and ebx, 0xfffffffe
cmp eax, 0x10
mov eax, dword [esp + 0x3c]
push eax
jb 0x51cd34
call fcn.00618fb8
jmp 0x51cd39
call fcn.005e0396
add esp, 4
cmp byte [esp + 0x17], 0
jne 0x51cac8
lea edi, [esi + 0x28]
mov ecx, edi
call fcn.00513fd0
jmp 0x51cb53
call fcn.005e0396
mov edx, dword [esp + 0x7c]
xor eax, eax
mov esi, dword [esp + 0x80]
add esp, 4
mov edi, esi
mov ecx, edx
rep stosd dword es:[edi], eax
lea eax, [edx*4]
push esi
cmp eax, 0x10
jb 0x51cd9e
call fcn.00618fb8
add esp, 4
mov ecx, dword [esp + 0x160]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
call fcn.005e0396
add esp, 4
mov ecx, dword [esp + 0x160]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
lea eax, [edi - 1]
push eax
lea eax, [esp + 0xe0]
push eax
call fcn.005125d0
add esp, 8
push 1
lea ecx, [esp + 0x20]
mov dword [esp + 0x16c], 0x18
call fcn.00512460
lea eax, [esp + 0xa0]
mov byte [esp + 0x168], 0x19
push edi
push eax
call fcn.005125d0
lea ecx, [esp + 0x24]
mov byte [esp + 0x170], 0x1a
push ecx
push eax
lea eax, [esp + 0xd8]
push eax
call fcn.004edaa0
add esp, 0x14
mov eax, dword [esp + 0xac]
mov edi, eax
mov edx, dword [esp + 0xa8]
mov ecx, edx
mov dword [esp + 0x18], eax
xor eax, eax
push dword [esp + 0x18]
rep stosd dword es:[edi], eax
lea eax, [edx*4]
cmp eax, 0x10
jb 0x51ce4d
call fcn.00618fb8
jmp 0x51ce52
call fcn.005e0396
add esp, 4
mov byte [esp + 0x168], 0x1d
xor eax, eax
mov edx, dword [esp + 0x24]
mov ecx, edx
mov edi, dword [esp + 0x28]
rep stosd dword es:[edi], eax
lea eax, [edx*4]
cmp eax, 0x10
mov eax, dword [esp + 0x28]
push eax
jb 0x51ce83
call fcn.00618fb8
jmp 0x51ce88
call fcn.005e0396
add esp, 4
lea eax, [ebx - 1]
push eax
lea eax, [esp + 0xf4]
push eax
call fcn.005125d0
add esp, 8
push 1
lea ecx, [esp + 0x74]
mov byte [esp + 0x16c], 0x1e
call fcn.00512460
lea eax, [esp + 0xa0]
mov byte [esp + 0x168], 0x1f
push ebx
push eax
call fcn.005125d0
lea ecx, [esp + 0x78]
mov byte [esp + 0x170], 0x20
push ecx
push eax
lea eax, [esp + 0x40]
push eax
call fcn.004edaa0
add esp, 0x14
mov edx, dword [esp + 0xa8]
xor eax, eax
mov ebx, dword [esp + 0xac]
mov ecx, edx
mov edi, ebx
rep stosd dword es:[edi], eax
lea eax, [edx*4]
push ebx
cmp eax, 0x10
jb 0x51cf0d
call fcn.00618fb8
jmp 0x51cf12
call fcn.005e0396
add esp, 4
mov byte [esp + 0x168], 0x23
xor eax, eax
mov edx, dword [esp + 0x78]
mov ecx, edx
mov ebx, dword [esp + 0x7c]
mov edi, ebx
rep stosd dword es:[edi], eax
lea eax, [edx*4]
push ebx
cmp eax, 0x10
jb 0x51cf41
call fcn.004ec280
jmp 0x51cf46
call fcn.004ec310
mov ebx, dword [ebp + 0xc]
lea edi, [esi + 0x14]
add esp, 4
nop
call fcn.005126b0
push eax
push ecx
call fcn.005126a0
add esp, 4
mov ecx, edi
push eax
push 1
lea eax, [esp + 0xd4]
push eax
lea eax, [esp + 0xec]
push eax
push ebx
call fcn.00513340
push dword [ebp + 8]
lea ecx, [esp + 0x4c]
call fcn.00512460
push edi
lea eax, [esp + 0x4c]
mov byte [esp + 0x16c], 0x24
push eax
lea eax, [esp + 0x64]
push eax
call fcn.004edb30
add esp, 0xc
push edi
push eax
push 1
lea eax, [esp + 0x3c]
mov byte [esp + 0x174], 0x25
push eax
lea eax, [esp + 0x100]
mov ecx, esi
push eax
push ebx
call fcn.00513340
test al, al
lea ecx, [esp + 0x5c]
sete bl
call fcn.004ed880
lea ecx, [esp + 0x48]
mov byte [esp + 0x168], 0x23
call fcn.004ed880
test bl, bl
mov ebx, dword [ebp + 0xc]
jne 0x51cf50
cmp dword [ebp + 8], 1
jne 0x51d170
lea ebx, [esi + 0x28]
lea esp, [esp]
push 2
lea ecx, [esp + 0x60]
call fcn.00512460
push 2
lea ecx, [esp + 0x4c]
mov byte [esp + 0x16c], 0x26
call fcn.00512460
lea eax, [esp + 0x5c]
mov byte [esp + 0x168], 0x27
push eax
lea eax, [esp + 0x74]
push esi
push eax
call fcn.004edaa0
add esp, 0xc
mov esi, eax
mov byte [esp + 0x168], 0x28
call fcn.005126b0
push eax
push ecx
call fcn.005126a0
add esp, 4
lea ecx, [esp + 0xb8]
push eax
push 0
push esi
lea eax, [esp + 0x58]
push eax
push dword [ebp + 0xc]
call fcn.005124e0
lea ecx, [esp + 0x70]
call fcn.004ed880
lea ecx, [esp + 0x48]
call fcn.004ed880
lea ecx, [esp + 0x5c]
mov byte [esp + 0x168], 0x2c
call fcn.004ed880
push 1
lea ecx, [esp + 0x4c]
call fcn.00512460
mov esi, dword [esp + 0x44]
lea eax, [esp + 0x48]
push eax
lea eax, [esp + 0x88]
mov byte [esp + 0x16c], 0x2d
push esi
push eax
call fcn.004edaa0
add esp, 0xc
push edi
push eax
lea eax, [esp + 0x24]
mov byte [esp + 0x170], 0x2e
push eax
call fcn.004edb00
add esp, 0xc
push esi
push eax
lea eax, [esp + 0xbc]
mov byte [esp + 0x170], 0x2f
push eax
lea eax, [esp + 0x68]
push eax
call fcn.00515e30
add esp, 0x10
push eax
mov ecx, ebx
mov byte [esp + 0x16c], 0x30
call fcn.00512700
lea ecx, [esp + 0x5c]
call fcn.004ed880
lea ecx, [esp + 0x1c]
call fcn.004ed880
lea ecx, [esp + 0x84]
call fcn.004ed880
lea ecx, [esp + 0x48]
call fcn.004ed880
lea ecx, [esp + 0xb4]
mov byte [esp + 0x168], 0x23
call fcn.004ed880
push 1
lea ecx, [esp + 0x4c]
call fcn.00512460
lea edx, [esp + 0x48]
mov ecx, ebx
call fcn.00518a00
lea ecx, [esp + 0x48]
mov bl, al
call fcn.004ed880
test bl, bl
lea ebx, [esi + 0x28]
jne 0x51d000
jmp 0x51d356
push 1
lea ecx, [esp + 0x60]
call fcn.00512460
push 3
lea ecx, [esp + 0x4c]
mov byte [esp + 0x16c], 0x31
call fcn.00512460
lea eax, [esp + 0x5c]
mov byte [esp + 0x168], 0x32
push eax
lea eax, [esp + 0xb8]
push esi
push eax
call fcn.004edaa0
add esp, 0xc
mov esi, eax
mov byte [esp + 0x168], 0x33
call fcn.005126b0
push eax
push ecx
call fcn.005126a0
add esp, 4
lea ecx, [esp + 0x20]
push eax
push 0
push esi
lea eax, [esp + 0x58]
push eax
push dword [ebp + 0xc]
call fcn.005124e0
lea ecx, [esp + 0xb4]
call fcn.004ed880
lea ecx, [esp + 0x48]
call fcn.004ed880
lea ecx, [esp + 0x5c]
mov byte [esp + 0x168], 0x37
call fcn.004ed880
push 4
lea ecx, [esp + 0x4c]
call fcn.00512460
lea eax, [esp + 0x1c]
mov byte [esp + 0x168], 0x38
push eax
push eax
lea eax, [esp + 0x78]
push eax
call fcn.004edad0
add esp, 0xc
lea ecx, [esp + 0x48]
mov byte [esp + 0x168], 0x39
push ecx
push eax
lea eax, [esp + 0x64]
push eax
call fcn.004edaa0
add esp, 0xc
mov esi, dword [esp + 0x44]
mov ecx, eax
mov edx, esi
mov byte [esp + 0x168], 0x3a
call fcn.0051bc60
cmp eax, 1
lea ecx, [esp + 0x5c]
sete bl
call fcn.004ed880
lea ecx, [esp + 0x70]
call fcn.004ed880
lea ecx, [esp + 0x48]
mov byte [esp + 0x168], 0x37
call fcn.004ed880
test bl, bl
jne 0x51d31b
push 1
lea ecx, [esp + 0x4c]
call fcn.00512460
lea eax, [esp + 0x48]
mov byte [esp + 0x168], 0x3b
push eax
lea eax, [esp + 0x88]
push esi
push eax
call fcn.004eda70
add esp, 0xc
push edi
push eax
lea eax, [esp + 0x78]
mov byte [esp + 0x170], 0x3c
push eax
call fcn.004edb00
add esp, 0xc
lea ecx, [esp + 0x1c]
mov byte [esp + 0x168], 0x3d
push esi
push ecx
mov edx, eax
lea ecx, [esp + 0x64]
call fcn.0051bfb0
add esp, 8
push eax
lea ecx, [esi + 0x28]
mov byte [esp + 0x16c], 0x3e
call fcn.00512700
lea ecx, [esp + 0x5c]
call fcn.004ed880
lea ecx, [esp + 0x70]
call fcn.004ed880
lea ecx, [esp + 0x84]
call fcn.004ed880
lea ecx, [esp + 0x48]
call fcn.004ed880
lea ecx, [esp + 0x1c]
mov byte [esp + 0x168], 0x23
call fcn.004ed880
push 2
lea ecx, [esp + 0x4c]
call fcn.00512460
lea edx, [esp + 0x48]
lea ecx, [esi + 0x28]
call fcn.00518a00
lea ecx, [esp + 0x48]
mov bl, al
call fcn.004ed880
test bl, bl
jne 0x51d170
lea ecx, [esp + 0x30]
call fcn.004ed880
lea ecx, [esp + 0xf0]
call fcn.004ed880
lea ecx, [esp + 0xc8]
call fcn.004ed880
lea ecx, [esp + 0xdc]
call fcn.004ed880
mov ecx, dword [esp + 0x160]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10