Function at 0x401000
Capabilities:
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x58
mov eax, dword [0x40e010]
push ebx
mov ebx, dword [0x40e020]
push ebp
push esi
mov esi, ebx
shl esi, 0x54
xor esi, eax
mov ecx, dword [0x40e01c]
xor esi, 0x1d7
mov ebp, dword [0x40e014]
mov eax, esi
mov edx, esi
shr eax, 0xec
xor eax, 0x2a7
push edi
or ecx, eax
lea eax, [ebp + 0x43]
mov dword [0x40e01c], ecx
mov ecx, ebp
shl edx, cl
mov ecx, dword [0x40e030]
mov edi, dword [0x40e034]
or ecx, eax
mov eax, dword [0x40e004]
add eax, 0x5ca93
mov dword [0x40e030], ecx
xor esi, edx
mov edx, dword [0x40e018]
mov dword [0x40e004], eax
mov dword [esp + 0x50], 0x2e5
lea eax, [edx + edx*4]
mov dword [esp + 0x20], 0x322
mov dword [esp + 0x4c], 0x3dd
mov dword [0x40e010], esi
lea eax, [eax + eax*8]
mov dword [esp + 0x28], 0x29d
shl eax, 3
sub eax, edx
mov dword [esp + 0x1c], 0x30f
add eax, 0x373
mov dword [esp + 0x24], 0xf6
or edi, eax
mov eax, dword [0x40e008]
mov dword [0x40e034], edi
mov edi, eax
xor edi, ecx
mov ecx, dword [0x40e028]
add eax, 0x28c
or ebx, edi
and ecx, eax
mov eax, 0x677b0
mov dword [0x40e028], ecx
mov ecx, dword [0x40e004]
shl eax, cl
mov dword [0x40e020], ebx
mov edi, 0x149
mov dword [esp + 0x34], 0x327
mov dword [esp + 0x48], 0x14c
mov dword [esp + 0x5c], eax
lea eax, [edx*8]
sub eax, edx
shl eax, 4
add eax, edx
mov edx, dword [esp + 0x5c]
lea ecx, [eax + eax*2]
mov eax, dword [0x40e030]
or edx, ecx
mov ecx, dword [0x40e040]
or ecx, edx
xor edx, edx
mov dword [0x40e040], ecx
mov ecx, dword [0x40e004]
and ecx, eax
mov eax, dword [0x40e03c]
add ecx, 0x86858
div ecx
mov edx, dword [0x40e024]
mov ecx, dword [0x40e008]
or edx, ecx
mov dword [0x40e03c], eax
or edx, 0x240
mov ecx, eax
shl edx, cl
mov ecx, dword [0x40e02c]
and ebx, 0x179
mov dword [esp + 0x30], 0x5a
mov dword [esp + 0x3c], 0x3d3
mov dword [esp + 0x38], 0x257
mov dword [esp + 0x58], 0x63f
and ebp, edx
mov edx, dword [0x40e00c]
mov dword [0x40e014], ebp
mov ebp, 0xd3
lea eax, [edx - 0x84]
mov dword [esp + 0x14], 0x2f6
xor ecx, eax
mov eax, dword [0x40e034]
sub esi, eax
mov eax, dword [0x40e01c]
and eax, esi
mov esi, dword [0x40e028]
mov dword [0x40e02c], ecx
mov ecx, dword [0x40e030]
or ebx, esi
mov dword [0x40e01c], eax
xor ecx, ebx
lea ebx, [edx + 0x25e]
mov dword [0x40e030], ecx
mov ecx, dword [0x40e040]
shl ebx, cl
mov dword [esp + 0x2c], 0xfffffc8f
xor ecx, ebx
mov ebx, dword [0x40e004]
mov dword [0x40e040], ecx
mov ecx, dword [0x40e008]
shr eax, cl
mov ecx, dword [0x40e030]
add esi, ebx
mov dword [0x40e028], esi
add esi, 0x2bc
mov dword [0x40e038], esi
mov esi, 0x3ef
xor eax, ecx
mov ecx, dword [0x40e034]
mov dword [0x40e024], eax
add ecx, edx
mov eax, 0x285
mov ebx, 0xff32011e
sar eax, cl
mov ecx, dword [esp + 0x74]
and edx, eax
xor eax, eax
mov dword [0x40e00c], edx
mov edx, 0x1d3
cmp ecx, eax
mov dword [esp + 0x10], edx
mov dword [esp + 0x18], eax
mov dword [esp + 0x40], eax
jle 0x401724
mov ecx, dword [esp + 0x6c]
mov eax, dword [esp + 0x70]
mov dword [esp + 0x5c], ecx
sub eax, ecx
mov ecx, dword [esp + 0x74]
mov dword [esp + 0x60], eax
mov dword [esp + 0x54], ecx
jmp 0x401292
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x3c]
add ecx, eax
mov eax, 0x3ec
sar eax, cl
mov ecx, dword [esp + 0x34]
xor ecx, eax
mov eax, edx
or eax, 0x36b
mov dword [esp + 0x34], ecx
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x28]
and ecx, eax
lea eax, [esi - 0x7a]
xor ecx, edi
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0x18]
xor ecx, eax
mov eax, dword [esp + 0x58]
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x30]
imul ecx, ebp
xor eax, esi
mov esi, dword [esp + 0x38]
xor eax, 0x3ea
imul ecx, eax
add esi, ecx
mov ecx, dword [esp + 0x48]
shl ecx, 0x41
mov dword [esp + 0x38], esi
mov esi, dword [esp + 0x14]
and ecx, edx
xor edx, eax
and esi, ecx
mov ecx, 0xffffff15
mov dword [esp + 0x14], esi
mov esi, dword [esp + 0x38]
sub ecx, esi
mov esi, dword [esp + 0x34]
and ecx, 0x3c8
xor edx, 0x1c2
or esi, ecx
mov ecx, dword [esp + 0x28]
xor ecx, 0xffffff27
mov dword [esp + 0x34], esi
mov esi, dword [esp + 0x1c]
and ecx, 0x4ff
and esi, ecx
mov ecx, dword [esp + 0x2c]
or ecx, 0x29ad2
mov dword [esp + 0x1c], esi
mov dword [esp + 0x2c], ecx
imul ecx, dword [esp + 0x58]
mov esi, edx
mov edx, 0x3c
sub edx, ebp
mov dword [esp + 0x30], ecx
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x4c], edx
mov edx, edi
mov dword [esp + 0x70], eax
and edx, 0x268
or ebx, edx
mov edx, ecx
shl edx, 4
sub edx, ecx
lea ecx, [ecx + edx*8]
mov edx, 0x37b
lea ecx, [ecx + ecx*2]
sar edx, cl
mov ecx, dword [esp + 0x58]
shr ecx, 0x39
mov dword [esp + 0x48], edx
mov edx, dword [esp + 0x18]
or ecx, edx
mov edx, dword [esp + 0x3c]
mov dword [esp + 0x44], ecx
mov ecx, dword [esp + 0x14]
sub ecx, edx
mov edx, dword [esp + 0x44]
xor edx, ecx
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x18], edx
mov edx, dword [esp + 0x58]
add edx, ecx
mov ecx, eax
or edx, 0x2f0
xor edx, ebp
mov ebp, 0x3a0
shl ebp, cl
mov ecx, dword [esp + 0x4c]
or edx, ebp
add ecx, edx
mov dword [esp + 0x4c], ecx
lea ecx, [esi + esi*2]
shl ecx, 8
add ecx, esi
lea ecx, [ecx + ecx*8]
lea ecx, [esi + ecx*2]
lea edx, [ecx + ecx*2]
lea ecx, [eax + eax*4]
shl edx, 1
lea ecx, [ecx + ecx*8]
mov dword [esp + 0x58], edx
shl ecx, 1
sub ecx, eax
lea eax, [ecx + ecx*4]
mov ecx, 0x215
sub ecx, eax
mov eax, dword [esp + 0x38]
or ecx, eax
mov eax, 0xd37199c7
mul ecx
mov ecx, dword [esp + 0x3c]
mov eax, ecx
shl eax, 4
shr edx, 0x12
add eax, ecx
mov dword [esp + 0x38], edx
lea edx, [eax + eax*2]
lea eax, [ecx + edx*2]
mov edx, dword [esp + 0x30]
imul ecx, ebx
shl eax, 2
mov dword [esp + 0x28], eax
mov eax, edi
neg eax
xor eax, edx
mov edx, dword [esp + 0x40]
mov dword [esp + 0x20], eax
sar eax, cl
mov ecx, dword [esp + 0x50]
lea ebp, [ecx - 0x1aa]
mov ecx, dword [esp + 0x70]
and ebp, edx
sub ebp, eax
mov eax, ecx
shl eax, 4
add eax, ecx
lea edx, [eax + eax*2]
lea eax, [ecx + edx*2]
xor edx, edx
shl eax, 2
mov ecx, eax
mov eax, dword [esp + 0x14]
xor ecx, 0x11e
add ecx, 0xe6780
div ecx
mov ecx, dword [esp + 0x50]
mov edx, 0x19c
shl edx, cl
add edx, 0xc0a08
mov ecx, edx
xor edx, edx
mov dword [esp + 0x14], eax
mov eax, edi
div ecx
mov edx, dword [esp + 0x30]
mov dword [esp + 0x44], eax
mov eax, 0x89
mov ecx, edx
mov edi, dword [esp + 0x18]
shl eax, cl
mov ecx, dword [esp + 0x50]
and eax, 0x3bc
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x14]
add ecx, eax
mov eax, 0x2fc
sar eax, cl
mov ecx, dword [esp + 0x1c]
xor ecx, eax
mov eax, dword [esp + 0x20]
add eax, 0x19c
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x38]
and edx, ecx
or edi, edx
lea eax, [eax + eax*4]
mov dword [esp + 0x18], edi
lea edx, [eax + eax*8]
mov eax, dword [esp + 0x4c]
shl edx, 3
and edx, eax
mov eax, dword [esp + 0x5c]
add ecx, edx
mov edx, dword [esp + 0x48]
mov dword [esp + 0x28], ecx
add edx, ecx
mov ecx, dword [esp + 0x60]
mov dword [esp + 0x48], edx
mov dl, byte [ecx + eax]
mov byte [eax], dl
lea eax, [esi + 0x17e]
and eax, ebx
xor esi, eax
mov eax, dword [esp + 0x70]
mov ecx, eax
mov dword [esp + 0x10], esi
xor ecx, 0x30c
cdq
add ecx, 0xbc7a0
idiv ecx
mov ecx, dword [esp + 0x10]
mov edx, ecx
sub edx, edi
mov edi, dword [esp + 0x28]
mov esi, eax
mov eax, dword [esp + 0x14]
or edx, eax
mov eax, dword [esp + 0x20]
or edi, edx
mov dword [esp + 0x28], edi
mov edi, dword [esp + 0x30]
or edi, eax
mov eax, dword [esp + 0x48]
or edi, 0x2eb
cdq
add edi, 0x1e460
idiv edi
mov edi, eax
mov eax, esi
or eax, 0x29f
sub ecx, eax
mov eax, 0x6c7fdc15
mul dword [esp + 0x50]
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x2c]
add ecx, ecx
or eax, ecx
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x1c], eax
xor eax, 0x54cae
sub ecx, eax
mov eax, dword [esp + 0x34]
shr edx, 0x12
imul eax, dword [esp + 0x24]
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0x30]
sub eax, ecx
mov ecx, dword [esp + 0x3c]
add eax, ecx
mov ecx, dword [esp + 0x38]
or eax, esi
and ecx, eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x38], ecx
mov ecx, dword [esp + 0x1c]
add ecx, 0xffffc69a
and eax, ecx
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x20], eax
mov eax, edx
and eax, 0x25c
xor eax, 0x2bd
and ecx, eax
mov eax, edx
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x18]
shr eax, cl
mov ecx, eax
mov eax, dword [esp + 0x58]
xor eax, ecx
mov dword [esp + 0x34], ecx
or eax, edi
and ecx, 0x102
or eax, edx
lea edx, [edi + edi*8]
mov dword [esp + 0x3c], eax
xor ecx, 0x27b
lea eax, [edi + edx*2]
mov edx, dword [esp + 0x14]
add ecx, 0x324b0
lea eax, [eax + eax*8]
shl eax, 2
sub eax, edi
or edi, eax
mov eax, dword [esp + 0x1c]
sub edx, eax
mov eax, dword [esp + 0x2c]
or edx, 0x10f
xor eax, edx
xor edx, edx
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x18]
div ecx
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x28]
or ecx, edx
mov edx, dword [esp + 0x2c]
or ecx, 0x128
and eax, ecx
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x10]
lea ecx, [edx + eax]
mov eax, dword [esp + 0x38]
shl eax, cl
mov ecx, eax
mov eax, dword [esp + 0x34]
add eax, ecx
mov ecx, dword [esp + 0x58]
sub ecx, edx
mov edx, dword [esp + 0x3c]
xor ecx, edx
mov dword [esp + 0x50], ecx
mov ecx, eax
shr ecx, 0xd3
and ecx, edi
and eax, ecx
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x28]
shl eax, cl
mov ecx, dword [esp + 0x30]
or eax, edx
mov edx, ecx
and esi, eax
mov eax, dword [esp + 0x20]
sub edx, eax
xor ebx, 0xfffffe79
lea eax, [edi + edx + 0x2ee]
mov edi, dword [esp + 0x14]
shl edi, cl
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x10]
xor edx, edx
mov ecx, esi
imul ecx, dword [esp + 0x4c]
and edi, eax
mov eax, dword [esp + 0x44]
add edi, 0xe9278
div edi
mov edx, dword [esp + 0x18]
mov edi, eax
mov eax, dword [esp + 0x10]
xor ecx, eax
mov eax, dword [esp + 0x54]
sub edx, ecx
mov ecx, dword [esp + 0x5c]
inc ecx
dec eax
mov dword [esp + 0x18], edx
mov dword [esp + 0x5c], ecx
mov dword [esp + 0x54], eax
jne 0x40128e
mov edx, ebp
mov eax, dword [esp + 0x1c]
imul edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x3c]
add edx, 0x12f
xor eax, edx
mov edx, dword [esp + 0x34]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x18]
sub eax, ebx
xor esi, 0x3cf
xor ecx, eax
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x3c], ecx
mov ecx, edx
not ecx
and eax, ecx
mov ecx, dword [esp + 0x58]
mov dword [esp + 0x2c], eax
mov eax, 0x18d
sar eax, cl
mov ecx, dword [esp + 0x28]
and eax, 0x16f
and ebp, eax
mov eax, dword [esp + 0x30]
xor eax, ecx
mov ecx, dword [esp + 0x18]
or eax, 0x3bb
xor ecx, eax
mov eax, 0x90f18c8b
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x2c]
imul ecx, dword [esp + 0x20]
sub ecx, ebx
or edx, ecx
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x34], edx
mul dword [esp + 0x4c]
shr edx, 0x13
mov dword [esp + 0x4c], edx
or ecx, 0x3f6
add edx, 0xfffffc12
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0x24]
xor edx, 0x3b3
or ecx, edx
mov edx, dword [esp + 0x3c]
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x2c]
sar edx, cl
mov ecx, ebx
mov eax, 0x19c
imul ecx, dword [esp + 0x48]
and edx, 0xaf
sub eax, edx
mov edx, dword [esp + 0x38]
shl edx, 0x13
xor eax, edx
mov edx, dword [esp + 0x50]
xor ecx, edx
mov edx, edi
xor ecx, 0xaa
xor eax, 0x368
mov dword [esp + 0x50], ecx
mov ecx, dword [esp + 0x2c]
sar edx, cl
mov ecx, dword [esp + 0x4c]
mov dword [esp + 0x44], eax
xor ecx, edx
mov edx, dword [esp + 0x20]
mov dword [esp + 0x4c], ecx
mov ecx, dword [esp + 0x40]
sar edx, cl
mov ecx, dword [esp + 0x2c]
and edx, ecx
mov ecx, ebx
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x10]
xor ecx, edx
xor ecx, esi
mov dword [esp + 0x10], ecx
mov edx, dword [esp + 0x48]
mov ecx, ebp
sub edx, eax
mov eax, dword [esp + 0x24]
shl edx, cl
add edx, 0xdea80
mov ecx, edx
xor edx, edx
div ecx
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x74]
test eax, eax
je 0x4024c1
mov ecx, dword [esp + 0x6c]
lea edx, [ecx + eax - 1]
mov eax, 1
sub eax, ecx
mov dword [esp + 0x5c], edx
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x44]
mov edx, dword [esp + 0x18]
or eax, 0x2b1
sub ecx, eax
mov eax, ebp
mov dword [esp + 0x44], ecx
mov ecx, ebx
not ecx
and ecx, edx
xor eax, 0x591
or edi, ecx
mov ecx, dword [esp + 0x10]
or ecx, eax
mov eax, ebp
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x20]
shl eax, cl
mov ecx, ebp
xor ecx, 0xed
and eax, 0x1ac
or eax, edx
mov edx, ebp
imul edx, dword [esp + 0x48]
and eax, ecx
mov ecx, dword [esp + 0x34]
mov dword [esp + 0x18], eax
mov eax, 0x1f7
shl eax, cl
mov ecx, dword [esp + 0x14]
add edx, 0xf6
and eax, ecx
mov ecx, dword [esp + 0x40]
and ecx, edx
mov edx, dword [esp + 0x10]
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0x38]
imul ecx, edx
mov dword [esp + 0x30], ecx
mov ecx, dword [esp + 0x4c]
sar edx, cl
mov ecx, dword [esp + 0x48]
or al, 0x3c
mov dword [esp + 0x14], eax
or eax, ecx
or edx, ebx
add edi, edx
mov edx, dword [esp + 0x24]
and edx, eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0x24], edx
xor edx, edx
lea ecx, [eax + 0x8d27a]
mov eax, ebx
div ecx
mov edx, dword [esp + 0x34]
mov ecx, dword [esp + 0x10]
add edx, 0x11b
or edx, ecx
mov ecx, dword [esp + 0x30]
or esi, edx
mov edx, dword [esp + 0x1c]
mov ebx, eax
mov eax, ecx
sub eax, ebx
and edx, eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0x1c], edx
mov edx, dword [esp + 0x44]
or edx, 0x3ec
add eax, 0xfffffd0c
xor edx, eax
mov eax, dword [esp + 0x1c]
xor ecx, edx
mov edx, dword [esp + 0x24]
sub edx, eax
mov eax, 0x3de
or edx, 0x3dd
mov dword [esp + 0x30], ecx
sub eax, edx
mov dword [esp + 0x48], eax
mov edx, dword [esp + 0x28]
add eax, 0x3c7
sar edx, cl
mov ecx, dword [esp + 0x28]
xor ecx, eax
mov eax, 0x634bd61
mov dword [esp + 0x28], ecx
or ebp, edx
mul dword [esp + 0x1c]
mov eax, dword [esp + 0x50]
shr edx, 0xe
lea ecx, [edx + eax + 0x31b]
lea eax, [edi + edi*8]
mov dword [esp + 0x1c], ecx
mov ecx, esi
lea edx, [eax + eax*8]
shl ecx, 0x92
lea eax, [edi + edx*2]
xor edx, edx
and esi, ecx
mov ecx, 0x222
lea eax, [eax + eax*2]
xor ebx, eax
mov eax, dword [esp + 0x78]
div dword [esp + 0x74]
sub ecx, ebx
mov eax, dword [esp + 0x14]
mov dword [esp + 0x54], ebx
mov dword [esp + 0x58], edx
mov edx, dword [esp + 0x38]
shr edx, cl
add edx, 0xbc7a0
mov ecx, edx
xor edx, edx
div ecx
mov ecx, dword [esp + 0x50]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x38]
shl eax, cl
mov ecx, dword [esp + 0x28]
and ecx, 0x19e
add ecx, 0xc0a08
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x10]
cdq
idiv ecx
mov ecx, dword [esp + 0x28]
mov edx, 0xfffffbff
sub edx, esi
add ecx, edx
mov edx, dword [esp + 0x34]
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x18]
add ecx, 0x188
xor ecx, edx
mov edx, dword [esp + 0x2c]
sub edx, ebx
and esi, ecx
mov ecx, dword [esp + 0x40]
sub edx, ebp
sub ecx, edx
mov ebx, 0x29d
shl ebx, cl
mov ecx, dword [esp + 0x50]
and edx, ebx
mov ebx, dword [esp + 0x3c]
mov dword [esp + 0x44], edx
mov edx, dword [esp + 0x20]
xor ebx, ecx
mov ecx, dword [esp + 0x1c]
shl edx, 0xec
sub ecx, edx
xor ebx, 0x6f
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0x38]
imul ecx, dword [esp + 0x4c]
xor esi, ecx
dec eax
sar eax, 0xa6
sub edi, eax
mov eax, dword [esp + 0x48]
mov edx, dword [esp + 0x3c]
or eax, 0x2b6
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x54]
lea ecx, [eax + eax*2]
shl ecx, 3
sub ecx, eax
shl ecx, 4
sub ecx, eax
shl ecx, 1
sar edx, cl
and edx, eax
mov eax, dword [esp + 0x1c]
lea ecx, [eax + eax*4]
lea ecx, [eax + ecx*4]
lea eax, [eax + ecx*4]
mov ecx, dword [esp + 0x4c]
add ecx, edx
mov edx, dword [esp + 0x58]
lea eax, [ecx + eax*2]
mov ecx, dword [esp + 0x6c]
mov dword [esp + 0x54], eax
mov dl, byte [edx + ecx]
mov ecx, dword [esp + 0x40]
mov byte [esp + 0x70], dl
mov edx, dword [esp + 0x1c]
xor edx, ebx
and ecx, edx
mov edx, 0x395
shl edx, cl
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0x20]
or ecx, edx
mov edx, ecx
mov dword [esp + 0x20], ecx
imul edx, ecx
mov ecx, dword [esp + 0x34]
and edx, 0x3d6
sub ecx, edx
xor edx, edx
mov dword [esp + 0x34], ecx
mov ecx, dword [esp + 0x14]
and ecx, 0x63
sub ebx, ecx
lea ecx, [eax + 0x90]
and ecx, eax
mov eax, dword [esp + 0x28]
add ecx, 0x1f018
div ecx
mov edx, dword [esp + 0x3c]
mov ecx, dword [esp + 0x54]
add edx, 0xffffff51
xor eax, 0x220
xor eax, edx
mov edx, dword [esp + 0x20]
imul ecx, edx
mov dword [esp + 0x28], eax
or eax, edx
or al, 0x68
and ecx, edi
sub ecx, dword [esp + 0x18]
add edx, eax
mov dword [esp + 0x20], edx
mov edx, dword [esp + 0x38]
and edx, esi
mov eax, ecx
add edx, 0xe2900
mov ecx, edx
xor edx, edx
div ecx
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x48]
sub ecx, edx
xor edx, edx
or ecx, 0x340
add ecx, 0x91ff0
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x14]
div ecx
mov ecx, dword [esp + 0x30]
mov edx, ecx
sar edx, 0xb6
xor eax, edx
mov edx, dword [esp + 0x54]
imul edx, edi
xor edx, ecx
mov dword [esp + 0x14], eax
add edx, 0x31510
mov eax, ecx
mov ecx, edx
xor edx, edx
div ecx
mov edx, 0x26c
mov ecx, edi
shl edx, cl
add edx, 0x74748
mov ecx, edx
xor edx, edx
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x38]
div ecx
mov edx, dword [esp + 0x48]
lea ecx, [edx + 0x104]
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x44]
and eax, 0x2c
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x30]
shl eax, cl
mov ecx, dword [esp + 0x4c]
mov dword [esp + 0x60], eax
mov eax, 0x46bbe373
mul ecx
mov eax, dword [esp + 0x60]
sub ecx, edx
shr ecx, 1
add ecx, edx
mov edx, 0x15f
shr ecx, 0x12
or eax, ecx
mov ecx, dword [esp + 0x44]
shl edx, cl
mov ecx, dword [esp + 0x14]
or ecx, edx
mov edx, dword [esp + 0x24]
imul edx, edi
mov dword [esp + 0x14], ecx
mov ecx, eax
shl edx, cl
mov ecx, dword [esp + 0x44]
sub ecx, edx
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x44], ecx
mov ecx, dword [esp + 0x18]
add eax, ecx
add ecx, 0x294
add edx, eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x1c], edx
mov edx, ebx
not edx
and edx, eax
mov eax, dword [esp + 0x10]
and edx, 0x109
mov dword [esp + 0x18], ecx
add esi, edx
lea ecx, [ebx + 0x83b27]
xor edx, edx
div ecx
mov edx, dword [esp + 0x2c]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x38]
imul eax, dword [esp + 0x14]
imul eax, dword [esp + 0x1c]
sub eax, edx
mov edx, dword [esp + 0x24]
sub eax, edx
add ebx, eax
mov eax, ebx
mov ecx, edi
shr eax, cl
mov ecx, dword [esp + 0x3c]
and eax, 0x38
and ecx, eax
mov eax, dword [esp + 0x14]
mov dword [esp + 0x3c], ecx
mov ecx, 0x183
sub ecx, edx
xor edx, edx
or ecx, 0x137
add ecx, 0xee480
div ecx
mov edx, dword [esp + 0x54]
shr edx, 0xe1
xor edx, 0x3ae
add esi, edx
mov edx, dword [esp + 0x20]
mov ecx, esi
sub ecx, edx
xor edx, edx
and ecx, ebp
add ecx, 0xfde8
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x10]
div ecx
mov edx, dword [esp + 0x14]
mov dword [esp + 0x10], eax
lea ecx, [edx + eax]
mov eax, dword [esp + 0x3c]
sar eax, cl
mov ecx, dword [esp + 0x48]
or edx, eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x2c]
shl edx, cl
add edx, 0xa3548
mov ecx, edx
xor edx, edx
div ecx
mov ecx, dword [esp + 0x38]
lea edx, [esi - 0x243]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x2c]
and edx, eax
mov eax, dword [esp + 0x34]
xor ecx, edx
xor edx, edx
mov dword [esp + 0x38], ecx
mov ecx, 0xf7bce
sub ecx, edi
div ecx
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x3c]
mov dword [esp + 0x34], eax
mov eax, 0x196
shl eax, cl
add eax, edx
mov edx, 0x14b
sub edx, ebx
or eax, edx
mov edx, dword [esp + 0x58]
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x5c]
mov cl, byte [eax]
mov eax, dword [esp + 0x6c]
mov byte [edx + eax], cl
mov eax, 0x680b74c3
imul dword [esp + 0x28]
mov eax, dword [esp + 0x24]
sar edx, 0x12
mov ecx, edx
or eax, 0x37b
shr ecx, 0x1f
add edx, ecx
xor edx, eax
mov eax, esi
mov dword [esp + 0x28], edx
mov ecx, dword [esp + 0x2c]
lea edx, [ebx + 0x31a]
sar eax, cl
and eax, 0x94
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x54]
xor eax, edx
mov edx, dword [esp + 0x20]
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x18]
lea ecx, [eax - 0xb2]
mov eax, dword [esp + 0x44]
and eax, 0x340
or ecx, ebx
add eax, edx
add ecx, 0x96640
xor edx, edx
div ecx
mov ecx, 0x354
sub ecx, edi
or edi, 0x39989
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x28]
lea edx, [eax + eax*8]
lea eax, [eax + edx*8]
mov edx, 0x246
shl edx, cl
shl eax, 2
or eax, 0x260
mov dword [esp + 0x24], eax
mov eax, esi
add edx, 0xf3e58
mov esi, dword [esp + 0x20]
mov ecx, edx
cdq
idiv ecx
mov edx, dword [esp + 0x10]
mov ecx, edx
imul ecx, esi
or ecx, dword [esp + 0x14]
and eax, ecx
mov ecx, eax
shl ecx, 5
sub ecx, eax
shl ecx, 2
sub ecx, eax
mov eax, dword [esp + 0x18]
shl ecx, 3
xor eax, ecx
mov ecx, dword [esp + 0x44]
mov dword [esp + 0x18], eax
mov eax, esi
shl eax, cl
and eax, dword [esp + 0x18]
or edx, eax
mov eax, dword [esp + 0x3c]
or eax, esi
mov dword [esp + 0x10], edx
lea ecx, [edx - 0x5fb]
or ebx, eax
mov dword [esp + 0x40], ecx
lea ecx, [edx + edi + 0x31207]
mov eax, ebp
xor edx, edx
div ecx
mov edx, dword [esp + 0x48]
mov ecx, dword [esp + 0x24]
add edx, 0x162
mov ebp, 0x3af
and edx, edi
shl ebp, cl
mov ecx, edx
mov dword [esp + 0x4c], edx
shl ecx, 5
add ecx, edx
add esi, ebp
mov dword [esp + 0x20], esi
shl ecx, 3
mov dword [esp + 0x60], eax
mov ebp, dword [esp + 0x28]
sub ecx, edx
mov esi, edi
or al, 0xb
sub esi, ecx
mov ecx, dword [esp + 0x30]
or ebp, esi
mov esi, eax
mov dword [esp + 0x28], ebp
mov ebp, dword [esp + 0x2c]
lea eax, [esi + 0x36d]
or ecx, eax
mov eax, edx
mov dword [esp + 0x30], ecx
mov ecx, dword [esp + 0x54]
or ecx, ebx
and eax, 0x3d2
sub ebx, ecx
mov ecx, dword [esp + 0x14]
or ecx, 0x41
or ebx, eax
mov eax, dword [esp + 0x34]
sub ebp, ecx
mov ecx, dword [esp + 0x44]
shr eax, cl
mov ecx, dword [esp + 0x18]
imul ecx, edx
mov edx, dword [esp + 0x44]
or ebp, eax
mov eax, dword [esp + 0x30]
and ecx, edx
or ebp, eax
mov eax, dword [esp + 0x48]
add ecx, 0x8b678
xor edx, edx
div ecx
mov dl, byte [esp + 0x70]
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x5c]
mov byte [eax], dl
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
shl eax, 0x8b
or eax, ecx
mov ecx, dword [esp + 0x18]
xor eax, edx
mov edx, dword [esp + 0x1c]
shl edx, cl
mov ecx, dword [esp + 0x28]
xor edx, 0x20d
and eax, edx
mov edx, dword [esp + 0x18]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x44]
or eax, ecx
lea ecx, [esi + 0x124]
or ecx, 0x2a2
mov dword [esp + 0x44], eax
and ecx, edx
xor edx, edx
sub ecx, eax
mov eax, dword [esp + 0x54]
sub ecx, 0x1f0
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x38]
imul ecx, dword [esp + 0x40]
shr ecx, 0xed
add ecx, 0x1a5e0
div ecx
mov edx, esi
shl edx, 5
add edx, esi
xor eax, 0x12d
mov dword [esp + 0x54], eax
lea eax, [esi + edx*2]
mov edx, dword [esp + 0x40]
shl eax, 1
mov ecx, eax
mov eax, dword [esp + 0x3c]
sub eax, ecx
mov ecx, dword [esp + 0x60]
and edx, 0x3f1
imul ebp, esi
or eax, edx
mov dword [esp + 0x2c], ebp
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x20]
mov ebp, dword [esp + 0x1c]
add eax, 0xfffffe86
xor eax, ecx
mov ecx, dword [esp + 0x10]
or ecx, eax
mov eax, dword [esp + 0x38]
lea edx, [ebx + 0x307]
mov dword [esp + 0x10], ecx
xor edx, ecx
shr ebp, cl
imul ecx, ecx, 0x34
and ebp, eax
mov eax, dword [esp + 0x24]
xor ebp, 0x24b
and ecx, 0x6f
or ebp, edx
add ecx, 0x3b150
cdq
idiv ecx
mov edx, dword [esp + 0x34]
mov ecx, dword [esp + 0x58]
add edx, 0x24f
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x10]
and eax, edx
mov edx, 0x273
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x4c]
or eax, 0x1d2
and eax, ecx
mov ecx, esi
shl edx, cl
mov ecx, dword [esp + 0x20]
xor eax, 0x304
and eax, edx
lea edx, [esi + ecx]
mov ecx, dword [esp + 0x40]
or ecx, edx
mov edx, ebp
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0x2c]
shr edx, cl
mov ecx, ebp
shr edx, cl
mov ecx, dword [esp + 0x30]
shl ecx, 0xc
xor edx, ebx
mov ebx, dword [esp + 0x54]
or edx, ecx
mov ecx, dword [esp + 0x14]
add ecx, ecx
or edx, ecx
mov ecx, ebp
shl ebx, 0x37
shl ebx, cl
mov ecx, dword [esp + 0x20]
xor ecx, 0x81
or ecx, 0x10e
xor ebx, ecx
mov ecx, eax
xor edi, ebx
mov ebx, dword [esp + 0x30]
sar ebx, cl
mov ecx, dword [esp + 0x48]
sub ecx, ebx
mov ebx, dword [esp + 0x2c]
mov dword [esp + 0x48], ecx
mov ecx, dword [esp + 0x3c]
sub ecx, ebx
mov ebx, dword [esp + 0x44]
xor ecx, ebx
mov ebx, dword [esp + 0x24]
xor ecx, 0xba
mov dword [esp + 0x44], ecx
mov ecx, edi
sar ebx, cl
mov ecx, dword [esp + 0x30]
add ecx, ebx
mov ebx, esi
mov dword [esp + 0x30], ecx
mov ecx, dword [esp + 0x40]
lea eax, [eax + ecx + 0x6a5]
mov ecx, eax
sar ebx, cl
mov ecx, dword [esp + 0x48]
xor ebx, eax
mov eax, dword [esp + 0x40]
xor ebx, eax
lea eax, [edi + edi*2]
shl eax, 3
sub eax, edi
shl eax, 3
sub eax, edi
shl eax, 1
or eax, ecx
mov ecx, dword [esp + 0x34]
or eax, 0x1e4
or ecx, eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x34], ecx
mov ecx, dword [esp + 0x14]
xor ecx, eax
mov eax, dword [esp + 0x24]
or eax, ecx
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x20]
and ecx, 0x4e
and eax, ecx
mov ecx, dword [esp + 0x14]
and ecx, eax
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x30]
or ecx, ebx
xor ebp, ecx
mov ecx, dword [esp + 0x10]
and eax, ecx
mov ecx, ebx
add esi, eax
mov eax, edx
shl eax, 4
sub eax, edx
or ecx, ebp
and edi, ecx
mov ecx, ebp
lea eax, [eax + eax*8]
shl eax, 1
sub eax, edx
neg eax
shl eax, cl
mov ecx, dword [esp + 0x1c]
add ecx, eax
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0x40]
add ecx, esi
shr eax, cl
mov ecx, dword [esp + 0x18]
and ecx, eax
mov eax, dword [esp + 0x54]
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x30]
add ecx, 0x65
xor ecx, 0x138
sub eax, ecx
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x34]
mov ecx, eax
shl ecx, 4
sub ecx, eax
shl ecx, 2
sub ecx, eax
mov eax, dword [esp + 0x70]
or eax, ecx
mov dword [esp + 0x54], eax
mov ecx, dword [esp + 0x2c]
mov eax, 0x33d
sub eax, esi
shl eax, cl
sub ebp, eax
mov eax, dword [esp + 0x10]
lea ecx, [eax - 0x230]
shl eax, cl
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x24]
mov ecx, eax
shl ecx, 6
add ecx, eax
mov eax, dword [esp + 0x70]
shl ecx, 3
sub eax, ecx
mov ecx, dword [esp + 0x10]
add eax, 0xe7
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x44]
add eax, ecx
mov ecx, dword [esp + 0x4c]
xor eax, ecx
mov ecx, dword [esp + 0x1c]
and eax, esi
and ebx, ecx
mov ecx, dword [esp + 0x44]
and eax, 0x1f1
mov dword [esp + 0x4c], eax
mov eax, ecx
shl eax, 5
add eax, ecx
lea eax, [eax + eax*2]
lea ecx, [ecx + eax*2]
mov eax, edx
shl ecx, 2
or ecx, ebp
xor edx, edx
add ecx, 0x1b580
div ecx
mov edx, ebx
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x30]
mov ecx, eax
shr edx, cl
mov ecx, dword [esp + 0x28]
xor edx, ecx
mov ecx, dword [esp + 0x34]
mov dword [esp + 0x10], edx
mov edx, dword [esp + 0x44]
sub edx, ecx
mov ecx, ebx
shr edx, cl
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x38], edx
mov edx, dword [esp + 0x18]
or ecx, edx
xor edx, edx
sub eax, ecx
mov ecx, ebp
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x14]
shl eax, cl
mov ecx, dword [esp + 0x78]
and eax, ebx
add eax, 0xf1360
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x24]
div dword [esp + 0x70]
mov edx, dword [esp + 0x44]
and eax, 0x334
and eax, edx
mov edx, ecx
shr edx, 0x19
shl ecx, 7
or edx, ecx
mov ecx, dword [esp + 0x74]
sub edx, ecx
mov dword [esp + 0x24], eax
sub edx, 0x499602d2
mov dword [esp + 0x78], edx
imul eax, dword [esp + 0x50]
mov ecx, dword [esp + 0x4c]
and eax, 0x137
or ecx, eax
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x4c], ecx
mov ecx, dword [esp + 0x30]
xor ecx, eax
or ecx, 0x12f
add eax, ecx
mov ecx, 0x5a777
mov edx, eax
or edx, esi
or edx, 0x302
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x38]
sub ecx, edx
xor edx, edx
div ecx
mov edx, dword [esp + 0x24]
imul edx, esi
mov ecx, eax
mov eax, dword [esp + 0x28]
and eax, 0x46f8c
mov dword [esp + 0x1c], ecx
add edx, eax
mov eax, dword [esp + 0x2c]
sub edx, ebx
sub eax, ecx
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x28], edx
mov edx, dword [esp + 0x38]
and eax, edx
mov edx, esi
shl edx, cl
mov ecx, dword [esp + 0x34]
xor eax, edx
mov edx, dword [esp + 0x14]
xor eax, ecx
mov ecx, dword [esp + 0x10]
sub ecx, edx
mov edx, 0x36c
shl edx, cl
mov ecx, dword [esp + 0x14]
add eax, edx
mov edx, dword [esp + 0x20]
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x1c]
sub eax, ecx
mov ecx, dword [esp + 0x18]
or eax, edx
mov edx, dword [esp + 0x44]
sub ecx, eax
mov eax, dword [esp + 0x50]
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x30]
add ecx, edx
mov edx, dword [esp + 0x54]
shr eax, cl
mov ecx, dword [esp + 0x28]
and eax, edx
mov edx, dword [esp + 0x2c]
shr edx, cl
mov ecx, dword [esp + 0x10]
shl edx, cl
add edx, 0x8ca00
mov ecx, edx
xor edx, edx
div ecx
mov ecx, dword [esp + 0x50]
mov edx, dword [esp + 0x10]
and ecx, 0x101
xor ecx, edx
xor edx, edx
add ecx, 0x5b4f0
div ecx
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x20]
or ecx, eax
mov eax, dword [esp + 0x34]
add ecx, 0x347d8
xor edx, edx
div ecx
xor edx, edx
mov ecx, ebx
sar edx, cl
add edx, 0xb798
mov ecx, edx
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x20]
cdq
idiv ecx
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x54]
and eax, 0x1e7
sub edx, eax
mov eax, ebx
shr eax, cl
mov dword [esp + 0x1c], edx
and ecx, eax
mov eax, dword [esp + 0x50]
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x20]
shl ecx, 0xb6
sub eax, ecx
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x28]
sub ebp, eax
mov eax, esi
mov ecx, ebp
sar eax, cl
mov ecx, edx
sar eax, cl
mov ecx, dword [esp + 0x20]
or ecx, eax
mov dword [esp + 0x20], ecx
mov ecx, dword [esp + 0x10]
shr edx, cl
mov ecx, dword [esp + 0x28]
xor edx, ecx
mov ecx, dword [esp + 0x44]
shr ebx, cl
add edx, ebx
mov eax, edx
mov dword [esp + 0x48], eax
lea edx, [eax + eax]
mov eax, dword [esp + 0x50]
mov ebx, edx
sub ebx, eax
mov eax, dword [esp + 0x3c]
mov edx, eax
shl edx, 4
sub edx, eax
lea eax, [eax + edx*8]
mov edx, dword [esp + 0x64]
lea eax, [eax + eax*2]
shl eax, 1
or eax, ecx
mov ecx, dword [esp + 0x2c]
xor eax, ecx
mov ecx, ebx
imul ecx, dword [esp + 0x14]
shl ecx, 0x75
sub eax, ecx
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x5c]
dec eax
add edx, eax
mov dword [esp + 0x5c], eax
test edx, edx
jne 0x401888
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x58
ret